es-grid-template 1.7.23 → 1.7.25

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 (163) hide show
  1. package/es/index.d.ts +1 -0
  2. package/es/index.js +3 -1
  3. package/es/table-component/ColumnsChoose.d.ts +13 -0
  4. package/es/table-component/ColumnsChoose.js +206 -0
  5. package/es/table-component/ContextMenu.d.ts +20 -0
  6. package/es/table-component/ContextMenu.js +75 -0
  7. package/es/table-component/InternalTable.d.ts +9 -0
  8. package/es/table-component/InternalTable.js +308 -0
  9. package/es/table-component/TableContainer.d.ts +31 -0
  10. package/es/table-component/TableContainer.js +249 -0
  11. package/es/table-component/TableContainerEdit.d.ts +31 -0
  12. package/es/table-component/TableContainerEdit.js +1301 -0
  13. package/es/table-component/body/EditableCell.d.ts +16 -0
  14. package/es/table-component/body/EditableCell.js +1039 -0
  15. package/es/table-component/body/TableBody.d.ts +19 -0
  16. package/es/table-component/body/TableBody.js +64 -0
  17. package/es/table-component/body/TableBodyCell.d.ts +12 -0
  18. package/es/table-component/body/TableBodyCell.js +149 -0
  19. package/es/table-component/body/TableBodyCellEdit.d.ts +16 -0
  20. package/es/table-component/body/TableBodyCellEdit.js +931 -0
  21. package/es/table-component/body/TableBodyRow.d.ts +21 -0
  22. package/es/table-component/body/TableBodyRow.js +151 -0
  23. package/es/table-component/components/ControlCheckbox.d.ts +13 -0
  24. package/es/table-component/components/ControlCheckbox.js +84 -0
  25. package/es/table-component/components/EditForm/EditForm.d.ts +27 -0
  26. package/es/table-component/components/EditForm/EditForm.js +395 -0
  27. package/es/table-component/components/EditForm/index.d.ts +1 -0
  28. package/es/table-component/components/EditForm/index.js +1 -0
  29. package/es/table-component/components/InputControl/InputControl.d.ts +27 -0
  30. package/es/table-component/components/InputControl/InputControl.js +121 -0
  31. package/es/table-component/components/InputControl/index.d.ts +1 -0
  32. package/es/table-component/components/InputControl/index.js +1 -0
  33. package/es/table-component/components/async-select/index.d.ts +11 -0
  34. package/es/table-component/components/async-select/index.js +41 -0
  35. package/es/table-component/components/async-table-select/index.d.ts +11 -0
  36. package/es/table-component/components/async-table-select/index.js +44 -0
  37. package/es/table-component/components/checkbox-control/index.d.ts +13 -0
  38. package/es/table-component/components/checkbox-control/index.js +40 -0
  39. package/es/table-component/components/checkbox-filter/CheckboxFilter.d.ts +18 -0
  40. package/es/table-component/components/checkbox-filter/CheckboxFilter.js +240 -0
  41. package/es/table-component/components/checkbox-filter/FilterSearch.d.ts +12 -0
  42. package/es/table-component/components/checkbox-filter/FilterSearch.js +36 -0
  43. package/es/table-component/components/command/Command.d.ts +10 -0
  44. package/es/table-component/components/command/Command.js +33 -0
  45. package/es/table-component/components/number/index.d.ts +10 -0
  46. package/es/table-component/components/number/index.js +42 -0
  47. package/es/table-component/components/number-range/index.d.ts +11 -0
  48. package/es/table-component/components/number-range/index.js +66 -0
  49. package/es/table-component/features/operator.d.ts +24 -0
  50. package/es/table-component/features/operator.js +62 -0
  51. package/es/table-component/footer/TableFooter.d.ts +13 -0
  52. package/es/table-component/footer/TableFooter.js +33 -0
  53. package/es/table-component/footer/TableFooterCell.d.ts +10 -0
  54. package/es/table-component/footer/TableFooterCell.js +66 -0
  55. package/es/table-component/footer/TableFooterRow.d.ts +14 -0
  56. package/es/table-component/footer/TableFooterRow.js +73 -0
  57. package/es/table-component/header/TableHead.d.ts +14 -0
  58. package/es/table-component/header/TableHead.js +60 -0
  59. package/es/table-component/header/TableHeadCell.d.ts +14 -0
  60. package/es/table-component/header/TableHeadCell.js +343 -0
  61. package/es/table-component/header/TableHeadRow.d.ts +16 -0
  62. package/es/table-component/header/TableHeadRow.js +76 -0
  63. package/es/table-component/header/renderFilter.d.ts +20 -0
  64. package/es/table-component/header/renderFilter.js +281 -0
  65. package/es/table-component/hook/constant.d.ts +73 -0
  66. package/es/table-component/hook/constant.js +240 -0
  67. package/es/table-component/hook/useColumns.d.ts +9 -0
  68. package/es/table-component/hook/useColumns.js +169 -0
  69. package/es/table-component/hook/useFilterOperator.d.ts +7 -0
  70. package/es/table-component/hook/useFilterOperator.js +33 -0
  71. package/es/table-component/hook/utils.d.ts +133 -0
  72. package/es/table-component/hook/utils.js +1870 -0
  73. package/es/table-component/index.d.ts +5 -0
  74. package/es/table-component/index.js +2 -0
  75. package/es/table-component/style.scss +1129 -0
  76. package/es/table-component/table/Grid.d.ts +24 -0
  77. package/es/table-component/table/Grid.js +234 -0
  78. package/es/table-component/type.d.ts +513 -0
  79. package/es/table-component/type.js +1 -0
  80. package/es/table-component/useContext.d.ts +74 -0
  81. package/es/table-component/useContext.js +15 -0
  82. package/lib/index.d.ts +1 -0
  83. package/lib/index.js +8 -1
  84. package/lib/table-component/ColumnsChoose.d.ts +13 -0
  85. package/lib/table-component/ColumnsChoose.js +216 -0
  86. package/lib/table-component/ContextMenu.d.ts +20 -0
  87. package/lib/table-component/ContextMenu.js +85 -0
  88. package/lib/table-component/InternalTable.d.ts +9 -0
  89. package/lib/table-component/InternalTable.js +313 -0
  90. package/lib/table-component/TableContainer.d.ts +31 -0
  91. package/lib/table-component/TableContainer.js +257 -0
  92. package/lib/table-component/TableContainerEdit.d.ts +31 -0
  93. package/lib/table-component/TableContainerEdit.js +1310 -0
  94. package/lib/table-component/body/EditableCell.d.ts +16 -0
  95. package/lib/table-component/body/EditableCell.js +1041 -0
  96. package/lib/table-component/body/TableBody.d.ts +19 -0
  97. package/lib/table-component/body/TableBody.js +72 -0
  98. package/lib/table-component/body/TableBodyCell.d.ts +12 -0
  99. package/lib/table-component/body/TableBodyCell.js +158 -0
  100. package/lib/table-component/body/TableBodyCellEdit.d.ts +16 -0
  101. package/lib/table-component/body/TableBodyCellEdit.js +938 -0
  102. package/lib/table-component/body/TableBodyRow.d.ts +21 -0
  103. package/lib/table-component/body/TableBodyRow.js +158 -0
  104. package/lib/table-component/components/ControlCheckbox.d.ts +13 -0
  105. package/lib/table-component/components/ControlCheckbox.js +92 -0
  106. package/lib/table-component/components/EditForm/EditForm.d.ts +27 -0
  107. package/lib/table-component/components/EditForm/EditForm.js +406 -0
  108. package/lib/table-component/components/EditForm/index.d.ts +1 -0
  109. package/lib/table-component/components/EditForm/index.js +16 -0
  110. package/lib/table-component/components/InputControl/InputControl.d.ts +27 -0
  111. package/lib/table-component/components/InputControl/InputControl.js +131 -0
  112. package/lib/table-component/components/InputControl/index.d.ts +1 -0
  113. package/lib/table-component/components/InputControl/index.js +16 -0
  114. package/lib/table-component/components/async-select/index.d.ts +11 -0
  115. package/lib/table-component/components/async-select/index.js +49 -0
  116. package/lib/table-component/components/async-table-select/index.d.ts +11 -0
  117. package/lib/table-component/components/async-table-select/index.js +53 -0
  118. package/lib/table-component/components/checkbox-control/index.d.ts +13 -0
  119. package/lib/table-component/components/checkbox-control/index.js +48 -0
  120. package/lib/table-component/components/checkbox-filter/CheckboxFilter.d.ts +18 -0
  121. package/lib/table-component/components/checkbox-filter/CheckboxFilter.js +249 -0
  122. package/lib/table-component/components/checkbox-filter/FilterSearch.d.ts +12 -0
  123. package/lib/table-component/components/checkbox-filter/FilterSearch.js +44 -0
  124. package/lib/table-component/components/command/Command.d.ts +10 -0
  125. package/lib/table-component/components/command/Command.js +42 -0
  126. package/lib/table-component/components/number/index.d.ts +10 -0
  127. package/lib/table-component/components/number/index.js +50 -0
  128. package/lib/table-component/components/number-range/index.d.ts +11 -0
  129. package/lib/table-component/components/number-range/index.js +74 -0
  130. package/lib/table-component/features/operator.d.ts +24 -0
  131. package/lib/table-component/features/operator.js +67 -0
  132. package/lib/table-component/footer/TableFooter.d.ts +13 -0
  133. package/lib/table-component/footer/TableFooter.js +42 -0
  134. package/lib/table-component/footer/TableFooterCell.d.ts +10 -0
  135. package/lib/table-component/footer/TableFooterCell.js +76 -0
  136. package/lib/table-component/footer/TableFooterRow.d.ts +14 -0
  137. package/lib/table-component/footer/TableFooterRow.js +81 -0
  138. package/lib/table-component/header/TableHead.d.ts +14 -0
  139. package/lib/table-component/header/TableHead.js +69 -0
  140. package/lib/table-component/header/TableHeadCell.d.ts +14 -0
  141. package/lib/table-component/header/TableHeadCell.js +352 -0
  142. package/lib/table-component/header/TableHeadRow.d.ts +16 -0
  143. package/lib/table-component/header/TableHeadRow.js +84 -0
  144. package/lib/table-component/header/renderFilter.d.ts +20 -0
  145. package/lib/table-component/header/renderFilter.js +291 -0
  146. package/lib/table-component/hook/constant.d.ts +73 -0
  147. package/lib/table-component/hook/constant.js +247 -0
  148. package/lib/table-component/hook/useColumns.d.ts +9 -0
  149. package/lib/table-component/hook/useColumns.js +180 -0
  150. package/lib/table-component/hook/useFilterOperator.d.ts +7 -0
  151. package/lib/table-component/hook/useFilterOperator.js +40 -0
  152. package/lib/table-component/hook/utils.d.ts +133 -0
  153. package/lib/table-component/hook/utils.js +1969 -0
  154. package/lib/table-component/index.d.ts +5 -0
  155. package/lib/table-component/index.js +9 -0
  156. package/lib/table-component/style.scss +1129 -0
  157. package/lib/table-component/table/Grid.d.ts +24 -0
  158. package/lib/table-component/table/Grid.js +236 -0
  159. package/lib/table-component/type.d.ts +513 -0
  160. package/lib/table-component/type.js +5 -0
  161. package/lib/table-component/useContext.d.ts +74 -0
  162. package/lib/table-component/useContext.js +21 -0
  163. package/package.json +4 -2
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ColumnsChoose = void 0;
8
+ var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _antd = require("antd");
12
+ var _icons = require("@ant-design/icons");
13
+ var _tree = _interopRequireDefault(require("rc-master-ui/es/tree"));
14
+ var _SearchOutlined = _interopRequireDefault(require("@ant-design/icons/SearchOutlined"));
15
+ var _utils = require("./hook/utils");
16
+ 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); }
17
+ 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; }
18
+ const BoxAction = _styledComponents.default.div.withConfig({
19
+ displayName: "BoxAction",
20
+ componentId: "es-grid-template__sc-jfujqh-0"
21
+ })(["border-top:1px solid #c4c4c4;padding-top:.75rem;display:flex;justify-content:end;gap:10px;.btn-action{background:none !important;border:none !important;&.btn-action-submit{color:#df4318;&:disabled{background-color:#f0f0f0 !important;}&:hover{color:#df4318 !important;}}&:hover{background-color:#f0f0f0 !important;}}"]);
22
+ const ColumnsChoose = props => {
23
+ const {
24
+ columns: propsColumns,
25
+ originColumns,
26
+ columnHidden,
27
+ triggerChangeColumns,
28
+ // triggerChangeKeys,
29
+ t,
30
+ columnsGroup
31
+ } = props;
32
+ const treeColumns = _react.default.useMemo(() => {
33
+ return (0, _utils.convertColumnsToTreeData)(propsColumns, columnsGroup);
34
+ }, [propsColumns, columnsGroup]);
35
+ const defaultSelectedKeys = _react.default.useMemo(() => {
36
+ const defaultColumns = originColumns.filter(it => it.field && it.showInColumnChoose !== false && !columnsGroup?.includes(it.field));
37
+ const aa = Object.keys(columnHidden);
38
+ return (0, _utils.getVisibleColumnKeys1)(defaultColumns).filter(it => !aa.includes(it));
39
+ }, [columnHidden, columnsGroup, originColumns]);
40
+ const [mergedSelectedKeys, setMergedSelectedKeys] = (0, _useMergedState.default)(defaultSelectedKeys && defaultSelectedKeys.length ? defaultSelectedKeys : undefined, {
41
+ value: undefined
42
+ });
43
+ const [clicked, setClicked] = (0, _react.useState)(false);
44
+ const [autoExpandParent, setAutoExpandParent] = (0, _react.useState)(true);
45
+
46
+ // const treeData = useMemo(() => {
47
+ // const loop = (data: TreeDataNode[]): TreeDataNode[] =>
48
+ // data.map((item) => {
49
+ // const strTitle = item.title as string;
50
+ // const index = strTitle.indexOf(searchValue);
51
+ // const beforeStr = strTitle.substring(0, index);
52
+ // const afterStr = strTitle.slice(index + searchValue.length);
53
+ // const title =
54
+ // index > -1 ? (
55
+ // <span key={item.key}>
56
+ // {beforeStr}
57
+ // <span className="site-tree-search-value">{searchValue}</span>
58
+ // {afterStr}
59
+ // </span>
60
+ // ) : (
61
+ // <span key={item.key}>{strTitle}</span>
62
+ // );
63
+ // if (item.children) {
64
+ // return { title, key: item.key, children: loop(item.children) };
65
+ // }
66
+ //
67
+ // return {
68
+ // title,
69
+ // key: item.key,
70
+ // };
71
+ // });
72
+ //
73
+ // // return loop(defaultData);
74
+ // return loop(columns as any);
75
+ // }, [searchValue, columns]);
76
+
77
+ const hide = () => {
78
+ setClicked(false);
79
+ };
80
+ const handleClickChange = open => {
81
+ setClicked(open);
82
+ };
83
+ const onExpand = () => {
84
+ // setExpandedKeys(newExpandedKeys)
85
+ setAutoExpandParent(false);
86
+ };
87
+
88
+ // const getParentKey = (key: React.Key, tree: TreeDataNode[]): React.Key => {
89
+ // let parentKey: React.Key
90
+ // for (let i = 0; i < tree.length; i++) {
91
+ // const node = tree[i]
92
+ // if (node.children) {
93
+ // if (node.children.some((item) => item.key === key)) {
94
+ // parentKey = node.key
95
+ // } else if (getParentKey(key, node.children)) {
96
+ // parentKey = getParentKey(key, node.children)
97
+ // }
98
+ // }
99
+ // }
100
+ // return parentKey!
101
+ // }
102
+
103
+ // const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
104
+ const onChange = () => {
105
+ // const { value } = e.target
106
+ // const newExpandedKeys = dataList
107
+ // .map((item) => {
108
+ // if (item.title.indexOf(value) > -1) {
109
+ // return getParentKey(item.key, defaultData)
110
+ // }
111
+ // return null
112
+ // })
113
+ // .filter((item, i, self): item is React.Key => !!(item && self.indexOf(item) === i))
114
+ // setExpandedKeys(newExpandedKeys)
115
+
116
+ // setSearchValue(value)
117
+ setAutoExpandParent(true);
118
+ };
119
+ const onCheck = keys => {
120
+ // setSelectedKeys(keys)
121
+ // setIsManualUpdate(true)
122
+ setMergedSelectedKeys(keys);
123
+ };
124
+ const handleAccept = () => {
125
+ const rs1 = (0, _utils.updateColumns1)(originColumns, mergedSelectedKeys ?? []);
126
+ triggerChangeColumns?.(rs1, mergedSelectedKeys ?? [], 'columnChoose');
127
+ hide();
128
+ };
129
+ const handleCancel = () => {
130
+ setMergedSelectedKeys(defaultSelectedKeys);
131
+ hide();
132
+ };
133
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
134
+ placement: 'bottomLeft',
135
+ content: /*#__PURE__*/_react.default.createElement("div", {
136
+ style: {
137
+ minWidth: 250,
138
+ maxWidth: 320
139
+ }
140
+ }, /*#__PURE__*/_react.default.createElement(_antd.Input, {
141
+ style: {
142
+ marginBottom: 8
143
+ },
144
+ placeholder: t ? t("Search") : 'Search',
145
+ prefix: /*#__PURE__*/_react.default.createElement(_SearchOutlined.default, null),
146
+ onChange: onChange
147
+ }), /*#__PURE__*/_react.default.createElement(_tree.default, {
148
+ onExpand: onExpand
149
+ // expandedKeys={expandedKeys}
150
+ ,
151
+ autoExpandParent: autoExpandParent
152
+ // treeData={treeData}
153
+ // treeData={columns.filter((it) => !columnsGroup?.includes(it.field as string))}
154
+ ,
155
+ treeData: treeColumns,
156
+ defaultExpandAll: true,
157
+ checkable: true
158
+ // onSelect={(keys, info) => {
159
+ // const key = info.node.key
160
+ //
161
+ // const find = findItemByKey(columns, 'key', key)
162
+ //
163
+ // // const tmpColumn
164
+ //
165
+ // // if (selectedKeys.includes(key as string)) {
166
+ // // const rssss = findKeyPath(columns, key as string)
167
+ // // const rs = selectedKeys.filter(item => !rssss.includes(item));
168
+ // //
169
+ // // setSelectedKeys(rs)
170
+ // // } else {
171
+ //
172
+ // // const rs = [...selectedKeys, keys[0]]
173
+ //
174
+ // // setSelectedKeys(keys)
175
+ // // }
176
+ // }}
177
+ ,
178
+ onCheck: keys => onCheck(keys),
179
+ multiple: true
180
+ // checkedKeys={selectedKeys}
181
+ ,
182
+ checkedKeys: mergedSelectedKeys || defaultSelectedKeys
183
+
184
+ // defaultCheckedKeys={selectedKeys}
185
+ ,
186
+ defaultCheckedKeys: defaultSelectedKeys,
187
+ selectedKeys: []
188
+
189
+ // height={window.innerHeight - 200}
190
+ ,
191
+ height: window.innerHeight / 2 > 450 ? 450 : window.innerHeight / 2 - 110
192
+ // style={{height: 300}}
193
+ }), /*#__PURE__*/_react.default.createElement(BoxAction, {
194
+ className: 'px-1'
195
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button
196
+ // className={classnames('btn-action btn-action-submit', {
197
+ // // disable: !columns.find((item) => item.visible !== false || item.visible)
198
+ // })}
199
+ , {
200
+ onClick: handleAccept
201
+ // disabled={!columns.find((item) => item.visible !== false || item.visible)}
202
+ }, t ? t('OK') : 'OK'), /*#__PURE__*/_react.default.createElement(_antd.Button, {
203
+ className: 'btn-action btn-action-cancel',
204
+ onClick: handleCancel
205
+ }, t ? t('Cancel') : 'Cancel'))),
206
+ trigger: "click",
207
+ open: clicked,
208
+ onOpenChange: handleClickChange,
209
+ arrow: false,
210
+ zIndex: 1065
211
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
212
+ arrow: false,
213
+ title: 'Cài đặt'
214
+ }, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null))));
215
+ };
216
+ exports.ColumnsChoose = ColumnsChoose;
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import type { ContextInfo } from "./type";
3
+ import type { ContextMenuItem } from "./type";
4
+ export declare const findItemByKey: (array: any[], key: string, value: any) => any;
5
+ type Props<RecordType> = {
6
+ rowData: RecordType | null;
7
+ contextMenuItems: ContextMenuItem[];
8
+ contextMenuClick?: (args: ContextInfo<RecordType>) => void;
9
+ open: boolean;
10
+ menuRef?: any;
11
+ setOpen: (open: boolean) => void;
12
+ pos: {
13
+ x: number | undefined;
14
+ y: number | undefined;
15
+ viewportWidth: number;
16
+ viewportHeight: number;
17
+ };
18
+ };
19
+ declare const ContextMenu: <RecordType extends object>(props: Props<RecordType>) => React.JSX.Element;
20
+ export default ContextMenu;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.findItemByKey = exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _antd = require("antd");
9
+ 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); }
10
+ 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; }
11
+ // import type { MenuProps } from "antd";
12
+
13
+ const findItemByKey = (array, key, value) => {
14
+ for (let i = 0; i < array.length; i++) {
15
+ const item = array[i];
16
+ if (item[key] === value) {
17
+ return item;
18
+ }
19
+ if (item.children && item.children.length > 0) {
20
+ const foundInChildren = findItemByKey(item.children, key, value);
21
+ if (foundInChildren) {
22
+ return foundInChildren;
23
+ }
24
+ }
25
+ }
26
+ return null;
27
+ };
28
+ exports.findItemByKey = findItemByKey;
29
+ const ContextMenu = props => {
30
+ const {
31
+ menuRef,
32
+ open,
33
+ setOpen,
34
+ pos,
35
+ contextMenuClick,
36
+ contextMenuItems,
37
+ rowData
38
+ } = props;
39
+ return /*#__PURE__*/React.createElement(_antd.Dropdown, {
40
+ placement: 'topRight',
41
+ open: open,
42
+ overlayClassName: 'be-popup-container',
43
+ overlayStyle: {
44
+ left: `${pos.x}px`,
45
+ top: `${pos.y}px`
46
+ },
47
+ dropdownRender: () => {
48
+ return /*#__PURE__*/React.createElement("div", {
49
+ ref: menuRef
50
+ }, /*#__PURE__*/React.createElement(_antd.Menu, {
51
+ items: contextMenuItems,
52
+ style: {
53
+ minWidth: 200,
54
+ maxHeight: pos.viewportHeight - 20,
55
+ width: 'fit-content'
56
+ },
57
+ rootClassName: 'popup-context-menu'
58
+ // rootClassName={'be-popup-container'}
59
+ ,
60
+
61
+ onClick: e => {
62
+ setOpen(false);
63
+ contextMenuClick?.({
64
+ rowInfo: {
65
+ rowData
66
+ },
67
+ event: e.domEvent,
68
+ item: {
69
+ ...findItemByKey(contextMenuItems, 'key', e.key),
70
+ id: e.key
71
+ }
72
+ });
73
+
74
+ // if (!open) {
75
+ // document.addEventListener(`click`, function onClickOutside() {
76
+ // setOpen(false);
77
+ // document.removeEventListener(`click`, onClickOutside);
78
+ // });
79
+ // }
80
+ }
81
+ }));
82
+ }
83
+ }, /*#__PURE__*/React.createElement(React.Fragment, null));
84
+ };
85
+ var _default = exports.default = ContextMenu;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import 'react-resizable/css/styles.css';
3
+ import 'dayjs/locale/es';
4
+ import 'dayjs/locale/vi';
5
+ import './style.scss';
6
+ import type { TableProps } from './type';
7
+ export declare const SELECTION_COLUMN: {};
8
+ declare const InternalTable: <RecordType extends object>(props: TableProps<RecordType>) => React.JSX.Element;
9
+ export default InternalTable;
@@ -0,0 +1,313 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ require("react-resizable/css/styles.css");
12
+ var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ require("dayjs/locale/es");
14
+ require("dayjs/locale/vi");
15
+ require("./style.scss");
16
+ var _faker = require("@faker-js/faker");
17
+ var _useMergedState = _interopRequireDefault(require("rc-util/lib/hooks/useMergedState"));
18
+ var _Grid = _interopRequireDefault(require("./table/Grid"));
19
+ var _reactTooltip = require("react-tooltip");
20
+ var _ContextMenu = _interopRequireDefault(require("./ContextMenu"));
21
+ var _utils = require("./hook/utils");
22
+ var _useColumns = require("./hook/useColumns");
23
+ 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); }
24
+ 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; }
25
+ // import en from "rc-master-ui/es/date-picker/locale/en_US"
26
+ // import vi from "rc-master-ui/es/date-picker/locale/vi_VN"
27
+
28
+ // import enDr from "rc-master-ui/es/locales/en_US"
29
+ // import viDr from "rc-master-ui/es/locales/vi_VN"
30
+
31
+ // import type { PickerLocale } from "rc-master-ui/es/date-picker/generatePicker"
32
+
33
+ // import Swal from "sweetalert2"
34
+ // import withReactContent from "sweetalert2-react-content"
35
+ // import { Tooltip } from "react-tooltip"
36
+
37
+ // import InfiniteTable from './table/InfiniteTable'
38
+ // import GridEdit from './table/GridEdit'
39
+
40
+ // import { Group } from 'becoxy-icons'
41
+
42
+ // import GridEdit from './table/GridEdit'
43
+
44
+ // import { columns111 } from '../test-2/columns'
45
+
46
+ _dayjs.default.extend(_customParseFormat.default);
47
+
48
+ // const MySwal = withReactContent(Swal)
49
+
50
+ // const ASCEND = 'ascend'
51
+ // const DESCEND = 'descend'
52
+
53
+ const SELECTION_COLUMN = exports.SELECTION_COLUMN = {};
54
+ const InternalTable = props => {
55
+ const {
56
+ t,
57
+ // columns: propsColumns,
58
+ columns,
59
+ lang,
60
+ locale,
61
+ dataSource,
62
+ editAble,
63
+ format,
64
+ groupAble,
65
+ groupSetting,
66
+ groupColumns,
67
+ infiniteScroll,
68
+ // wrapSettings,
69
+ // onFilter,
70
+ // expandable,
71
+ contextMenuItems: propContextMenuItems,
72
+ contextMenuHidden,
73
+ contextMenuClick,
74
+ contextMenuOpen,
75
+ ...rest
76
+ } = props;
77
+ const id = _react.default.useMemo(() => {
78
+ return _faker.faker.string.alpha(20);
79
+ }, []);
80
+ const rowKey = 'rowId';
81
+ const prefix = 'ui-rc';
82
+ const getWindowSize = () => {
83
+ const {
84
+ innerWidth,
85
+ innerHeight
86
+ } = window;
87
+ return {
88
+ innerWidth,
89
+ innerHeight
90
+ };
91
+ };
92
+ const [windowSize, setWindowSize] = (0, _react.useState)(getWindowSize());
93
+ _react.default.useEffect(() => {
94
+ const handleWindowResize = () => {
95
+ setWindowSize(getWindowSize());
96
+ };
97
+ window.addEventListener('resize', handleWindowResize);
98
+ return () => {
99
+ window.removeEventListener('resize', handleWindowResize);
100
+ };
101
+ }, []);
102
+
103
+ // const local = lang && lang === 'en' ? en : vi
104
+ // const dateRangeLocale = lang && lang === 'en' ? enDr : viDr
105
+
106
+ // const buddhistLocale: PickerLocale = {
107
+ // ...local,
108
+ // lang: {
109
+ // ...local.lang
110
+ // }
111
+ // }
112
+
113
+ const menuRef = _react.default.useRef(null);
114
+ const viewportWidth = windowSize.innerWidth;
115
+ const viewportHeight = windowSize.innerHeight;
116
+ const [menuVisible, setMenuVisible] = _react.default.useState(false);
117
+ const [selectedRowData, setSelectedRowData] = _react.default.useState(null);
118
+ const [position, setPosition] = _react.default.useState({
119
+ x: 0,
120
+ y: 0,
121
+ viewportWidth,
122
+ viewportHeight
123
+ });
124
+
125
+ // const [tooltipContent, setTooltipContent] = useState<any>('')
126
+
127
+ const [filterStates, setFilterState] = _react.default.useState(null);
128
+ const [sorterStates, setSorterStates] = _react.default.useState([]);
129
+ const [expanded, setExpanded] = _react.default.useState({});
130
+ const convertData = _react.default.useMemo(() => {
131
+ if (groupAble && groupSetting && groupSetting.client !== false) {
132
+ return (0, _utils.groupArrayByColumns)(dataSource, groupColumns);
133
+ }
134
+ return (0, _utils.addRowIdArray)(dataSource);
135
+ }, [dataSource, groupAble, groupColumns, groupSetting]);
136
+ const mergedColumns = _react.default.useMemo(() => {
137
+ return (0, _useColumns.convertToTanStackColumns)({
138
+ t,
139
+ columns,
140
+ // expanded,
141
+ // setExpanded,
142
+ // expandable,
143
+ format,
144
+ editAble
145
+ });
146
+
147
+ // return convertToTanStackColumns<RecordType>(columns, expanded, setExpanded, expandable)
148
+ }, [t, columns, format, editAble]);
149
+ console.log('mergedColumns', mergedColumns);
150
+ const columnPinning = _react.default.useMemo(() => {
151
+ return {
152
+ left: (0, _utils.getFixedFields)(columns, 'left'),
153
+ right: (0, _utils.getFixedFields)(columns, 'right')
154
+ };
155
+ }, [columns]);
156
+
157
+ // ========================= Keys =========================
158
+ const [mergedFilterKeys, setMergedFilterKeys] = (0, _useMergedState.default)((0, _utils.getAllRowKey)(convertData), {
159
+ value: undefined
160
+ });
161
+ const mergedData = _react.default.useMemo(() => {
162
+ return (0, _utils.filterDataByColumns)(convertData, filterStates, sorterStates, mergedFilterKeys);
163
+ }, [convertData, filterStates, mergedFilterKeys, sorterStates]);
164
+ const columnVisibility = _react.default.useMemo(() => {
165
+ return (0, _utils.getInvisibleColumns)(columns);
166
+ }, [columns]);
167
+ const [columnsHiddenKeys, setColumnsHiddenKeys] = (0, _useMergedState.default)(undefined, {
168
+ value: undefined
169
+ });
170
+ const triggerChangeColumns = (cols, keys) => {
171
+ const aa = (0, _utils.flatColumns2)(columns).map(it => it.field);
172
+ const rsss = (0, _utils.getDiffent2Array)(aa, keys);
173
+ setColumnsHiddenKeys(rsss);
174
+ };
175
+ const contextMenuItems = _react.default.useMemo(() => {
176
+ if (typeof contextMenuHidden === 'function' && propContextMenuItems && selectedRowData) {
177
+ const hiddenItems = contextMenuHidden({
178
+ rowInfo: {
179
+ rowData: selectedRowData
180
+ }
181
+ });
182
+ return propContextMenuItems.filter(item => !hiddenItems.includes(item?.key));
183
+ }
184
+ if (contextMenuHidden && typeof contextMenuHidden !== 'function' && propContextMenuItems) {
185
+ return propContextMenuItems.filter(item => !contextMenuHidden.includes(item?.key));
186
+ }
187
+ return propContextMenuItems;
188
+ }, [propContextMenuItems, contextMenuHidden, selectedRowData]);
189
+
190
+ // const [columns, setColumns] = React.useState<any[]>([])
191
+
192
+ // React.useEffect(() => {
193
+ // setColumns(propsColumns)
194
+ // }, [propsColumns])
195
+
196
+ // const triggerFilter = (queries: any[]) => {
197
+
198
+ // if (onFilter) {
199
+ // onFilter?.(convertFilters(queries))
200
+ // } else {
201
+
202
+ // setFilterState(convertFilters(queries))
203
+
204
+ // const b = filterDataByColumns(convertData, convertFilters(queries), [], [])
205
+
206
+ // setMergedFilterKeys(getAllRowKey(b))
207
+
208
+ // }
209
+ // }
210
+
211
+ const onContextMenu = data => event => {
212
+ event.preventDefault(); // Ngăn chặn menu mặc định của trình duyệt
213
+
214
+ setSelectedRowData(data);
215
+ contextMenuOpen?.({
216
+ rowInfo: {
217
+ rowData: data
218
+ },
219
+ event
220
+ });
221
+ setMenuVisible(true);
222
+
223
+ // Đợi DOM cập nhật và lấy kích thước menu
224
+ setTimeout(() => {
225
+ const menuElement = menuRef.current; // Lấy menu từ DOM
226
+ const menuWidth = menuElement?.offsetWidth || 200; // Mặc định 200px nếu chưa render
227
+ const menuHeight = menuElement?.offsetHeight; // Mặc định 450px nếu chưa render
228
+
229
+ // Điều chỉnh vị trí menu
230
+ let x = event.clientX;
231
+ let y = event.clientY;
232
+ if (x + menuWidth > viewportWidth) {
233
+ x = x - menuWidth - 10; // Cách cạnh phải 10px
234
+ }
235
+ if (y + menuHeight > viewportHeight) {
236
+ if (y < menuHeight) {
237
+ y = 10;
238
+ } else {
239
+ y = y - 10 - menuHeight; // Cách cạnh dưới 10px
240
+ }
241
+ }
242
+ setPosition(prevState => ({
243
+ ...prevState,
244
+ x,
245
+ y
246
+ }));
247
+ }, 100);
248
+ if (!menuVisible) {
249
+ document.addEventListener(`click`, function onClickOutside(e) {
250
+ const element = e.target;
251
+ const menuContainer = document.querySelector('.popup-context-menu');
252
+ const isInsideContainer = element.closest('.popup-context-menu') && menuContainer;
253
+ if (isInsideContainer) {
254
+ return;
255
+ }
256
+ setMenuVisible(false);
257
+ setPosition(prevState => ({
258
+ ...prevState,
259
+ x: undefined,
260
+ y: undefined
261
+ }));
262
+ document.removeEventListener(`click`, onClickOutside);
263
+ });
264
+ }
265
+ };
266
+
267
+ // const TableComponent = infiniteScroll ? InfiniteTable : (groupAble ? Group : editAble ? GridEdit : Grid)
268
+ // const TableComponent = Grid
269
+
270
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_Grid.default, (0, _extends2.default)({}, rest, {
271
+ t: t,
272
+ id: id,
273
+ prefix: prefix,
274
+ originData: convertData,
275
+ dataSource: mergedData,
276
+ locale: locale,
277
+ format: format
278
+ // columns={columns111 as any}
279
+ ,
280
+ columns: mergedColumns,
281
+ propsColumns: columns,
282
+ rowKey: rowKey,
283
+ groupSetting: groupSetting,
284
+ groupAble: groupAble,
285
+ groupColumns: groupColumns,
286
+ columnPinning: columnPinning,
287
+ columnHidden: columnsHiddenKeys ? (0, _utils.convertToObj)(columnsHiddenKeys) : columnVisibility,
288
+ triggerFilter: setFilterState,
289
+ triggerSorter: setSorterStates,
290
+ setMergedFilterKeys: setMergedFilterKeys,
291
+ mergedFilterKeys: mergedFilterKeys,
292
+ expanded: expanded,
293
+ onContextMenu: onContextMenu,
294
+ contextMenuItems: contextMenuItems,
295
+ editAble: editAble,
296
+ triggerChangeColumns: triggerChangeColumns,
297
+ setExpanded: setExpanded
298
+ })), menuVisible && /*#__PURE__*/_react.default.createElement(_ContextMenu.default, {
299
+ open: menuVisible,
300
+ pos: position,
301
+ setOpen: setMenuVisible,
302
+ menuRef: menuRef,
303
+ contextMenuItems: contextMenuItems,
304
+ contextMenuClick: contextMenuClick,
305
+ rowData: selectedRowData
306
+ }), /*#__PURE__*/_react.default.createElement(_reactTooltip.Tooltip, {
307
+ id: `${id}-tooltip-content`,
308
+ style: {
309
+ zIndex: 1999
310
+ }
311
+ }));
312
+ };
313
+ var _default = exports.default = InternalTable;
@@ -0,0 +1,31 @@
1
+ import type { Dispatch, SetStateAction } from 'react';
2
+ import React from 'react';
3
+ import type { ColumnDef, Table } from '@tanstack/react-table';
4
+ import type { ColumnsTable, TableProps } from './type';
5
+ type TableContainerProps<T> = Omit<TableProps<T>, 'columns'> & {
6
+ table: Table<T>;
7
+ prefix: string;
8
+ id: string;
9
+ rowKey: any;
10
+ originData: T[];
11
+ setIsSelectionChange: Dispatch<SetStateAction<{
12
+ isChange: boolean;
13
+ type: string;
14
+ rowData: T;
15
+ }>>;
16
+ setSorterChange: Dispatch<SetStateAction<boolean>>;
17
+ setFilterChange: Dispatch<SetStateAction<boolean>>;
18
+ onContextMenu?: (data: T) => (event: any) => void;
19
+ tableHeight?: number;
20
+ triggerPaste?: (pastedRows: T[], pastedColumnsArray: string[], newData: T[], copyRows: T[]) => void;
21
+ mergedFilterKeys?: any;
22
+ setMergedFilterKeys?: any;
23
+ setExpanded?: any;
24
+ expanded?: any;
25
+ columns: ColumnDef<T>[];
26
+ propsColumns: ColumnsTable;
27
+ triggerChangeColumns: any;
28
+ columnHidden: any;
29
+ };
30
+ declare const TableContainer: <RecordType extends object>(props: TableContainerProps<RecordType>) => React.JSX.Element;
31
+ export default TableContainer;