es-grid-template 0.0.4 → 0.0.7

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 (64) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +19 -0
  3. package/README.md +1 -6
  4. package/{dist/components/GridTable → es}/CheckboxFilter.d.ts +1 -1
  5. package/es/CheckboxFilter.js +249 -0
  6. package/{dist/components/GridTable → es}/ColumnsChoose.d.ts +3 -2
  7. package/es/ColumnsChoose.js +213 -0
  8. package/{dist/components/GridTable → es}/ContextMenu.d.ts +1 -1
  9. package/es/ContextMenu.js +126 -0
  10. package/{dist/components/GridTable → es}/FilterSearch.d.ts +3 -3
  11. package/es/FilterSearch.js +33 -0
  12. package/es/GridTable.d.ts +7 -0
  13. package/es/GridTable.js +927 -0
  14. package/es/hooks/constant.js +214 -0
  15. package/es/hooks/index.js +5 -0
  16. package/{dist → es}/hooks/useColumns/index.d.ts +1 -1
  17. package/es/hooks/useColumns/index.js +25 -0
  18. package/{dist → es}/hooks/useIsOverflow.d.ts +1 -1
  19. package/es/hooks/useIsOverflow.js +17 -0
  20. package/es/hooks/useOnClickOutside.js +28 -0
  21. package/{dist → es}/hooks/utils.d.ts +7 -3
  22. package/es/hooks/utils.js +192 -0
  23. package/es/index.d.ts +2 -0
  24. package/es/index.js +2 -0
  25. package/es/styles.scss +30 -0
  26. package/es/type.d.ts +88 -0
  27. package/es/type.js +1 -0
  28. package/lib/CheckboxFilter.d.ts +19 -0
  29. package/lib/CheckboxFilter.js +257 -0
  30. package/lib/ColumnsChoose.d.ts +10 -0
  31. package/lib/ColumnsChoose.js +223 -0
  32. package/lib/ContextMenu.d.ts +20 -0
  33. package/lib/ContextMenu.js +135 -0
  34. package/lib/FilterSearch.d.ts +12 -0
  35. package/lib/FilterSearch.js +42 -0
  36. package/lib/GridTable.d.ts +7 -0
  37. package/lib/GridTable.js +936 -0
  38. package/lib/hooks/constant.d.ts +48 -0
  39. package/lib/hooks/constant.js +221 -0
  40. package/lib/hooks/index.d.ts +4 -0
  41. package/lib/hooks/index.js +49 -0
  42. package/lib/hooks/useColumns/index.d.ts +2 -0
  43. package/lib/hooks/useColumns/index.js +31 -0
  44. package/lib/hooks/useIsOverflow.d.ts +1 -0
  45. package/lib/hooks/useIsOverflow.js +26 -0
  46. package/lib/hooks/useOnClickOutside.d.ts +1 -0
  47. package/lib/hooks/useOnClickOutside.js +36 -0
  48. package/lib/hooks/utils.d.ts +18 -0
  49. package/lib/hooks/utils.js +215 -0
  50. package/lib/index.d.ts +2 -0
  51. package/lib/index.js +9 -0
  52. package/lib/styles.scss +30 -0
  53. package/lib/type.d.ts +88 -0
  54. package/lib/type.js +5 -0
  55. package/package.json +75 -94
  56. package/dist/components/GridTable/GridTable.d.ts +0 -6
  57. package/dist/components/GridTable/index.d.ts +0 -1
  58. package/dist/components/index.d.ts +0 -1
  59. package/dist/index.d.ts +0 -2
  60. package/dist/index.js +0 -53
  61. package/dist/type.d.ts +0 -45
  62. /package/{dist → es}/hooks/constant.d.ts +0 -0
  63. /package/{dist → es}/hooks/index.d.ts +0 -0
  64. /package/{dist → es}/hooks/useOnClickOutside.d.ts +0 -0
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var React = _interopRequireWildcard(require("react"));
9
+ var _classnames = _interopRequireDefault(require("classnames"));
10
+ var _FilterSearch = _interopRequireDefault(require("./FilterSearch"));
11
+ var _uiRc = require("ui-rc");
12
+ var _antd = require("antd");
13
+ var _useFilter = require("antd/es/table/hooks/useFilter");
14
+ 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); }
15
+ 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; }
16
+ // import {flattenKeys} from "ui-rc/dist/table/hooks/useFilter";
17
+
18
+ // import Empty from "ui-rc/dist/empty";
19
+ // import Tree from "ui-rc/dist/tree";
20
+
21
+ function searchValueMatched(searchValue, text) {
22
+ if (typeof text === 'string' || typeof text === 'number') {
23
+ return text?.toString().toLowerCase().includes(searchValue.trim().toLowerCase());
24
+ }
25
+ return false;
26
+ }
27
+ function renderFilterItems({
28
+ filters,
29
+ prefixCls,
30
+ filteredKeys,
31
+ filterMultiple,
32
+ searchValue,
33
+ filterSearch
34
+ }) {
35
+ return filters.map((filter, index) => {
36
+ const key = String(filter.value);
37
+ if (filter.children) {
38
+ return {
39
+ key: key || index,
40
+ label: filter.text,
41
+ popupClassName: `${prefixCls}-dropdown-submenu`,
42
+ children: renderFilterItems({
43
+ filters: filter.children,
44
+ prefixCls,
45
+ filteredKeys,
46
+ filterMultiple,
47
+ searchValue,
48
+ filterSearch
49
+ })
50
+ };
51
+ }
52
+ const Component = filterMultiple ? _uiRc.Checkbox : _uiRc.Radio;
53
+ const item = {
54
+ key: filter.value !== undefined ? key : index,
55
+ label: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Component, {
56
+ checked: filteredKeys.includes(key)
57
+ }), /*#__PURE__*/React.createElement("span", null, filter.text))
58
+ };
59
+ if (searchValue.trim()) {
60
+ if (typeof filterSearch === 'function') {
61
+ return filterSearch(searchValue, filter) ? item : null;
62
+ }
63
+ return searchValueMatched(searchValue, filter.text) ? item : null;
64
+ }
65
+ return item;
66
+ });
67
+ }
68
+ function hasSubMenu(filters) {
69
+ return filters.some(({
70
+ children
71
+ }) => children);
72
+ }
73
+ const CheckboxFilter = props => {
74
+ const {
75
+ // column,
76
+ filterSearch = true,
77
+ tablePrefixCls = 'ui-rc-table',
78
+ prefixCls = 'ui-rc-table-filter',
79
+ dropdownPrefixCls = 'ui-rc-dropdown',
80
+ filterMultiple,
81
+ selectedKeys,
82
+ locale,
83
+ options,
84
+ filterMode = 'tree',
85
+ // open,
86
+ searchValue,
87
+ setSearchValue,
88
+ onSelect
89
+ } = props;
90
+
91
+ // const [searchValue, setSearchValue] = React.useState('');
92
+
93
+ const [openKeys, setOpenKeys] = React.useState([]);
94
+
95
+ // clear search value after close filter dropdown
96
+ // React.useEffect(() => {
97
+ // // if (visible) {
98
+ // setSearchValue('');
99
+ // // }
100
+ // }, [open]);
101
+
102
+ const onOpenChange = keys => {
103
+ setOpenKeys(keys);
104
+ };
105
+ const items = renderFilterItems({
106
+ // filters: column.filters || [],
107
+ filters: options || [],
108
+ filterSearch,
109
+ prefixCls,
110
+ filteredKeys: selectedKeys ?? [],
111
+ filterMultiple,
112
+ searchValue
113
+ });
114
+ const dropdownMenuClass = (0, _classnames.default)({
115
+ // [`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(column.filters || []),
116
+ [`${dropdownPrefixCls}-menu-without-submenu`]: !hasSubMenu(options || [])
117
+ });
118
+ console.log('selectedKeys', selectedKeys);
119
+ const empty = /*#__PURE__*/React.createElement(_antd.Empty, {
120
+ image: _antd.Empty.PRESENTED_IMAGE_SIMPLE,
121
+ description: locale.filterEmptyText,
122
+ imageStyle: {
123
+ height: 24
124
+ },
125
+ style: {
126
+ margin: 0,
127
+ padding: '16px 0'
128
+ }
129
+ });
130
+ const isEmpty = items.every(item => item === null);
131
+ const onSearch = e => {
132
+ const {
133
+ value
134
+ } = e.target;
135
+ setSearchValue(value);
136
+ };
137
+
138
+ // if ((column.filters || []).length === 0) {
139
+ // return empty;
140
+ // }
141
+
142
+ const getTreeData = ({
143
+ filters
144
+ }) => (filters || []).map((filter, index) => {
145
+ const key = String(filter.value);
146
+ const item = {
147
+ title: filter.text,
148
+ key: filter.value !== undefined ? key : String(index)
149
+ };
150
+ if (filter.children) {
151
+ item.children = getTreeData({
152
+ filters: filter.children
153
+ });
154
+ }
155
+ return item;
156
+ });
157
+ const getFilterData = node => ({
158
+ ...node,
159
+ text: node.title,
160
+ value: node.key,
161
+ children: node.children?.map(item => getFilterData(item)) || []
162
+ });
163
+ const onCheckAll = e => {
164
+ console.log('e.target.checked', e.target.checked);
165
+ if (e.target.checked) {
166
+ const allFilterKeys = (0, _useFilter.flattenKeys)(options).map(key => String(key));
167
+ console.log('allFilterKeys', allFilterKeys);
168
+ // setFilteredKeysSync(allFilterKeys);
169
+ onSelect?.(allFilterKeys);
170
+ } else {
171
+ onSelect?.([]);
172
+ // setFilteredKeysSync([]);
173
+ }
174
+ };
175
+ const onCheck = (keys, {
176
+ node,
177
+ checked
178
+ }) => {
179
+ if (!filterMultiple) {
180
+ // onSelectKeys({ selectedKeys: checked && node.key ? [node.key] : [] });
181
+ onSelect?.(checked && node.key ? [node.key] : []);
182
+ } else {
183
+ // onSelectKeys({ selectedKeys: keys });
184
+ onSelect?.(keys);
185
+ }
186
+ };
187
+ if (filterMode === 'tree') {
188
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_FilterSearch.default, {
189
+ filterSearch: filterSearch,
190
+ value: searchValue,
191
+ onChange: onSearch,
192
+ tablePrefixCls: tablePrefixCls,
193
+ locale: locale
194
+ }), /*#__PURE__*/React.createElement("div", {
195
+ className: `${tablePrefixCls}-filter-dropdown-tree`
196
+ }, filterMultiple ? /*#__PURE__*/React.createElement(_uiRc.Checkbox
197
+ // checked={selectedKeys.length === flattenKeys(column.filters).length}
198
+ , {
199
+ checked: selectedKeys.length === (0, _useFilter.flattenKeys)(options).length
200
+ // indeterminate={
201
+ // selectedKeys.length > 0 &&
202
+ // selectedKeys.length < flattenKeys(column.filters).length
203
+ // }
204
+ ,
205
+
206
+ indeterminate: selectedKeys.length > 0 && selectedKeys.length < (0, _useFilter.flattenKeys)(options).length,
207
+ className: `${tablePrefixCls}-filter-dropdown-checkall`,
208
+ onChange: onCheckAll
209
+ }, locale.filterCheckall) : null, /*#__PURE__*/React.createElement(_antd.Tree, {
210
+ checkable: true,
211
+ selectable: false,
212
+ blockNode: true,
213
+ multiple: filterMultiple,
214
+ checkStrictly: !filterMultiple,
215
+ className: `${dropdownPrefixCls}-menu`,
216
+ onCheck: onCheck,
217
+ checkedKeys: selectedKeys,
218
+ selectedKeys: selectedKeys,
219
+ showIcon: false
220
+ // treeData={getTreeData({ filters: column.filters })}
221
+ ,
222
+ treeData: getTreeData({
223
+ filters: options
224
+ }),
225
+ autoExpandParent: true,
226
+ defaultExpandAll: true,
227
+ filterTreeNode: searchValue.trim() ? node => {
228
+ if (typeof filterSearch === 'function') {
229
+ // @ts-ignore
230
+ return filterSearch(searchValue, getFilterData(node));
231
+ }
232
+ return searchValueMatched(searchValue, node.title);
233
+ } : undefined
234
+ })));
235
+ }
236
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_FilterSearch.default, {
237
+ filterSearch: filterSearch,
238
+ value: searchValue,
239
+ onChange: onSearch,
240
+ tablePrefixCls: tablePrefixCls,
241
+ locale: locale
242
+ }), isEmpty ? empty : /*#__PURE__*/React.createElement(_uiRc.Menu, {
243
+ selectable: true,
244
+ multiple: filterMultiple,
245
+ prefixCls: `${dropdownPrefixCls}-menu`,
246
+ className: dropdownMenuClass,
247
+ onSelect: onSelect,
248
+ onDeselect: onSelect,
249
+ selectedKeys: selectedKeys
250
+ // getPopupContainer={getPopupContainer}
251
+ ,
252
+ openKeys: openKeys,
253
+ onOpenChange: onOpenChange,
254
+ items: items
255
+ }));
256
+ };
257
+ var _default = exports.default = CheckboxFilter;
@@ -0,0 +1,10 @@
1
+ import type { Dispatch, SetStateAction } from "react";
2
+ import React from "react";
3
+ import type { TableColumnsType } from "ui-rc";
4
+ export declare const BoxInputFilterColumn: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
5
+ export type IColumnsChoose<RecordType> = {
6
+ columns: any[];
7
+ setColumns: Dispatch<SetStateAction<TableColumnsType<RecordType>>>;
8
+ t?: any;
9
+ };
10
+ export declare const ColumnsChoose: <RecordType extends object>(props: IColumnsChoose<RecordType>) => React.JSX.Element;
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ColumnsChoose = exports.BoxInputFilterColumn = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
10
+ var _antd = require("antd");
11
+ var _icons = require("@ant-design/icons");
12
+ var _hooks = require("./hooks");
13
+ 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); }
14
+ 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; }
15
+ const {
16
+ Search
17
+ } = _antd.Input;
18
+
19
+ // const RowStyle = styled.div`
20
+ // padding: 6px 0;
21
+ //
22
+ // height: 35px;
23
+ //
24
+ // .ellipsis {
25
+ // overflow: hidden;
26
+ // white-space: nowrap;
27
+ // text-overflow: ellipsis;
28
+ // word-break: keep-all;
29
+ // }
30
+ // `
31
+
32
+ const BoxAction = _styledComponents.default.div.withConfig({
33
+ displayName: "BoxAction",
34
+ componentId: "es-grid-template__sc-1k89i9w-0"
35
+ })(["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;}}"]);
36
+ const BoxInputFilterColumn = exports.BoxInputFilterColumn = _styledComponents.default.div.withConfig({
37
+ displayName: "BoxInputFilterColumn",
38
+ componentId: "es-grid-template__sc-1k89i9w-1"
39
+ })(["display:flex;position:relative;align-items:center;.input__value{z-index:1;border-radius:0;border-top:0;border-left:0;border-right:0;&:focus{box-shadow:none !important;}&.is-clearable{padding-right:25px !important;}}.input__clear-icon{cursor:pointer;position:absolute;right:5px;z-index:10;}"]);
40
+ const ColumnsChoose = props => {
41
+ const {
42
+ columns: propsColumns,
43
+ setColumns: changeHiddenColumn
44
+ // t,
45
+ // columnsGrouped,
46
+ // onChangeDisplay
47
+ // frozen
48
+ } = props;
49
+
50
+ // const dataList: { key: React.Key; title: string }[] = [];
51
+
52
+ const defaultColumns = (0, _react.useMemo)(() => {
53
+ const rs = propsColumns.filter(it => it.key || it.dataIndex);
54
+ return rs;
55
+ }, [propsColumns]);
56
+ const defaultSelectedKeys = (0, _react.useMemo)(() => {
57
+ return (0, _hooks.getVisibleColumnKeys)(propsColumns);
58
+ }, [propsColumns]);
59
+
60
+ // const columnsChooseRef: any = useRef()
61
+ // const searchRef: any = useRef()
62
+
63
+ const [columns] = (0, _react.useState)(defaultColumns);
64
+ const [clicked, setClicked] = (0, _react.useState)(false);
65
+ const [autoExpandParent, setAutoExpandParent] = (0, _react.useState)(true);
66
+ // const [expandedKeys, setExpandedKeys] = useState<React.Key[]>([]);
67
+ const [searchValue, setSearchValue] = (0, _react.useState)('');
68
+ const [selectedKeys, setSelectedKeys] = (0, _react.useState)(defaultSelectedKeys);
69
+ const treeData = (0, _react.useMemo)(() => {
70
+ const loop = data => data.map(item => {
71
+ const strTitle = item.title;
72
+ const index = strTitle.indexOf(searchValue);
73
+ const beforeStr = strTitle.substring(0, index);
74
+ const afterStr = strTitle.slice(index + searchValue.length);
75
+ const title = index > -1 ? /*#__PURE__*/_react.default.createElement("span", {
76
+ key: item.key
77
+ }, beforeStr, /*#__PURE__*/_react.default.createElement("span", {
78
+ className: "site-tree-search-value"
79
+ }, searchValue), afterStr) : /*#__PURE__*/_react.default.createElement("span", {
80
+ key: item.key
81
+ }, strTitle);
82
+ if (item.children) {
83
+ return {
84
+ title,
85
+ key: item.key,
86
+ children: loop(item.children)
87
+ };
88
+ }
89
+ return {
90
+ title,
91
+ key: item.key
92
+ };
93
+ });
94
+
95
+ // return loop(defaultData);
96
+ return loop(columns);
97
+ }, [searchValue]);
98
+ const hide = () => {
99
+ setClicked(false);
100
+ };
101
+ const handleClickChange = open => {
102
+ setClicked(open);
103
+ };
104
+ const onExpand = () => {
105
+ // setExpandedKeys(newExpandedKeys)
106
+ setAutoExpandParent(false);
107
+ };
108
+
109
+ // const getParentKey = (key: React.Key, tree: TreeDataNode[]): React.Key => {
110
+ // let parentKey: React.Key
111
+ // for (let i = 0; i < tree.length; i++) {
112
+ // const node = tree[i]
113
+ // if (node.children) {
114
+ // if (node.children.some((item) => item.key === key)) {
115
+ // parentKey = node.key
116
+ // } else if (getParentKey(key, node.children)) {
117
+ // parentKey = getParentKey(key, node.children)
118
+ // }
119
+ // }
120
+ // }
121
+ // return parentKey!
122
+ // }
123
+
124
+ const onChange = e => {
125
+ const {
126
+ value
127
+ } = e.target;
128
+ // const newExpandedKeys = dataList
129
+ // .map((item) => {
130
+ // if (item.title.indexOf(value) > -1) {
131
+ // return getParentKey(item.key, defaultData)
132
+ // }
133
+ // return null
134
+ // })
135
+ // .filter((item, i, self): item is React.Key => !!(item && self.indexOf(item) === i))
136
+ // setExpandedKeys(newExpandedKeys)
137
+ setSearchValue(value);
138
+ setAutoExpandParent(true);
139
+ };
140
+ const onCheck = keys => {
141
+ setSelectedKeys(keys);
142
+ };
143
+ const handleAccept = () => {
144
+ const rs1 = (0, _hooks.updateColumns)(columns, selectedKeys);
145
+ changeHiddenColumn(rs1);
146
+ hide();
147
+ };
148
+ const handleCancel = () => {
149
+ setSelectedKeys(defaultSelectedKeys);
150
+ hide();
151
+ };
152
+ return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_antd.Popover, {
153
+ placement: 'bottomLeft',
154
+ content: /*#__PURE__*/_react.default.createElement("div", {
155
+ style: {
156
+ minWidth: 250
157
+ }
158
+ }, /*#__PURE__*/_react.default.createElement(Search, {
159
+ style: {
160
+ marginBottom: 8
161
+ },
162
+ placeholder: "Search",
163
+ onChange: onChange
164
+ }), /*#__PURE__*/_react.default.createElement(_antd.Tree, {
165
+ onExpand: onExpand
166
+ // expandedKeys={expandedKeys}
167
+ ,
168
+ autoExpandParent: autoExpandParent,
169
+ treeData: treeData,
170
+ defaultExpandAll: true,
171
+ checkable: true
172
+ // onSelect={(keys, info) => {
173
+ // const key = info.node.key
174
+ // console.log('selectedKeys', keys)
175
+ // console.log('info', info)
176
+ //
177
+ // const find = findItemByKey(columns, 'key', key)
178
+ //
179
+ // // const tmpColumn
180
+ //
181
+ // // if (selectedKeys.includes(key as string)) {
182
+ // // const rssss = findKeyPath(columns, key as string)
183
+ // // const rs = selectedKeys.filter(item => !rssss.includes(item));
184
+ // //
185
+ // // setSelectedKeys(rs)
186
+ // // } else {
187
+ //
188
+ // // const rs = [...selectedKeys, keys[0]]
189
+ //
190
+ // // console.log('rs', rs)
191
+ // // setSelectedKeys(keys)
192
+ // // }
193
+ // }}
194
+ ,
195
+ onCheck: keys => onCheck(keys),
196
+ multiple: true,
197
+ checkedKeys: selectedKeys,
198
+ defaultCheckedKeys: selectedKeys,
199
+ selectedKeys: [],
200
+ height: window.innerHeight - 200
201
+ }), /*#__PURE__*/_react.default.createElement(BoxAction, {
202
+ className: 'px-1'
203
+ }, /*#__PURE__*/_react.default.createElement(_antd.Button
204
+ // className={classnames('btn-action btn-action-submit', {
205
+ // // disable: !columns.find((item) => item.visible !== false || item.visible)
206
+ // })}
207
+ , {
208
+ onClick: handleAccept
209
+ // disabled={!columns.find((item) => item.visible !== false || item.visible)}
210
+ }, 'OK'), /*#__PURE__*/_react.default.createElement(_antd.Button, {
211
+ className: 'btn-action btn-action-cancel',
212
+ onClick: handleCancel
213
+ }, 'Cancel'))),
214
+ trigger: "click",
215
+ open: clicked,
216
+ onOpenChange: handleClickChange,
217
+ arrow: false
218
+ }, /*#__PURE__*/_react.default.createElement(_antd.Tooltip, {
219
+ arrow: false,
220
+ title: 'Cài đặt'
221
+ }, /*#__PURE__*/_react.default.createElement(_icons.SettingOutlined, null))));
222
+ };
223
+ exports.ColumnsChoose = ColumnsChoose;
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import type { MenuProps } from "antd";
3
+ import type { ContextInfo } from "./type";
4
+ export declare const findItemByKey: (array: any[], key: string, value: any) => any;
5
+ type Props<RecordType> = {
6
+ rowData: RecordType | null;
7
+ contextMenuItems: MenuProps["items"];
8
+ contextMenuClick?: (args: ContextInfo<RecordType>) => void;
9
+ open: boolean;
10
+ menuRef?: any;
11
+ setOpen: (open: boolean) => void;
12
+ pos: {
13
+ x: number;
14
+ y: number;
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,135 @@
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
+ const findItemByKey = (array, key, value) => {
12
+ for (let i = 0; i < array.length; i++) {
13
+ const item = array[i];
14
+ if (item[key] === value) {
15
+ return item;
16
+ }
17
+ if (item.children && item.children.length > 0) {
18
+ const foundInChildren = findItemByKey(item.children, key, value);
19
+ if (foundInChildren) {
20
+ return foundInChildren;
21
+ }
22
+ }
23
+ }
24
+ return null;
25
+ };
26
+ exports.findItemByKey = findItemByKey;
27
+ const ContextMenu = props => {
28
+ const {
29
+ menuRef,
30
+ open,
31
+ setOpen,
32
+ pos,
33
+ contextMenuClick,
34
+ contextMenuItems,
35
+ rowData
36
+ } = props;
37
+
38
+ // const addPopupOffset = (items: MenuProps["items"]) : any => {
39
+ // return items?.map(item =>
40
+ // item && "children" in item
41
+ // ? {
42
+ // ...item,
43
+ // // popupOffset: [0, 30],
44
+ // children: addPopupOffset(item.children) }
45
+ // : item
46
+ // );
47
+ // };
48
+
49
+ // const newItems = React.useMemo(() => {
50
+ // return addPopupOffset(items)
51
+ // }, [items])
52
+
53
+ return (
54
+ /*#__PURE__*/
55
+ // <div>
56
+ // {open && (
57
+ // <div
58
+ // ref={menuRef}
59
+ // style={{
60
+ // position: "absolute",
61
+ // top: pos.y,
62
+ // left: pos.x,
63
+ // zIndex: 1000,
64
+ // background: "white",
65
+ // border: "1px solid #ddd",
66
+ // boxShadow: "2px 2px 5px rgba(0,0,0,0.2)",
67
+ // }}
68
+ // // onClick={() => setOpen(false)}
69
+ // >
70
+ // <Menu
71
+ // items={contextMenuItems}
72
+ // style={{ minWidth: 200, maxWidth: 400, maxHeight: pos.viewportHeight - 20 , width: 200 }}
73
+ // rootClassName={'popup-context-menu'}
74
+ //
75
+ // onClick={(e) => {
76
+ // contextMenuClick?.({
77
+ // rowInfo: {
78
+ // rowData
79
+ // },
80
+ // event: e.domEvent,
81
+ // item: {
82
+ // ...findItemByKey(contextMenuItems as any[], 'key', e.key ),
83
+ // id: e.key
84
+ // }
85
+ // })
86
+ // }} >
87
+ // </Menu>
88
+ // </div>
89
+ // )}
90
+ // </div>
91
+ React.createElement(_antd.Dropdown, {
92
+ placement: 'topRight',
93
+ open: open,
94
+ overlayStyle: {
95
+ left: `${pos.x}px`,
96
+ top: `${pos.y}px`
97
+ },
98
+ dropdownRender: () => {
99
+ return /*#__PURE__*/React.createElement("div", {
100
+ ref: menuRef
101
+ }, /*#__PURE__*/React.createElement(_antd.Menu, {
102
+ items: contextMenuItems,
103
+ style: {
104
+ minWidth: 200,
105
+ maxWidth: 400,
106
+ maxHeight: pos.viewportHeight - 20,
107
+ width: 200
108
+ },
109
+ rootClassName: 'popup-context-menu',
110
+ onClick: e => {
111
+ setOpen(false);
112
+ contextMenuClick?.({
113
+ rowInfo: {
114
+ rowData
115
+ },
116
+ event: e.domEvent,
117
+ item: {
118
+ ...findItemByKey(contextMenuItems, 'key', e.key),
119
+ id: e.key
120
+ }
121
+ });
122
+
123
+ // if (!open) {
124
+ // document.addEventListener(`click`, function onClickOutside() {
125
+ // setOpen(false);
126
+ // document.removeEventListener(`click`, onClickOutside);
127
+ // });
128
+ // }
129
+ }
130
+ }));
131
+ }
132
+ }, /*#__PURE__*/React.createElement(React.Fragment, null))
133
+ );
134
+ };
135
+ var _default = exports.default = ContextMenu;
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ import type { FilterSearchType, TableLocale } from "antd/es/table/interface";
3
+ import type { AnyObject } from "./type";
4
+ interface FilterSearchProps<RecordType = AnyObject> {
5
+ value: string;
6
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
7
+ filterSearch: FilterSearchType<RecordType>;
8
+ tablePrefixCls: string;
9
+ locale: TableLocale;
10
+ }
11
+ declare const FilterSearch: <RecordType extends AnyObject = AnyObject>(props: FilterSearchProps<RecordType>) => React.JSX.Element;
12
+ export default FilterSearch;