qbs-react-grid 1.1.0 → 1.1.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.
@@ -3,10 +3,10 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWith
3
3
  var _excluded = ["rowData", "onChange", "checkedKeys", "dataKey", "dataTheme"],
4
4
  _excluded2 = ["rowData", "dataKey", "expandedRowKeys", "onChange"],
5
5
  _excluded3 = ["rowData", "renderCell", "toolTip", "dataKey", "onChange", "rowClick", "type", "link"];
6
- import React from 'react';
6
+ import React, { useState } from 'react';
7
7
  import Cell from '../Cell';
8
- import MenuDropDown from './utilities/menuDropDown';
9
8
  import { handleCellFormat } from './utilities/handleFormatCell';
9
+ import MenuDropDown from './utilities/menuDropDown';
10
10
  var CHECKBOX_LINE_HEIGHT = '36px';
11
11
  export var CheckCell = /*#__PURE__*/React.memo(function (_ref) {
12
12
  var rowData = _ref.rowData,
@@ -82,12 +82,30 @@ export var CustomTableCell = /*#__PURE__*/React.memo(function (_ref4) {
82
82
  type = _ref4.type,
83
83
  link = _ref4.link,
84
84
  props = _objectWithoutPropertiesLoose(_ref4, _excluded3);
85
- return /*#__PURE__*/React.createElement(Cell, _extends({}, props, {
85
+ var _useState = useState(false),
86
+ openMenu = _useState[0],
87
+ setOpenMenu = _useState[1];
88
+ var handleRightClick = function handleRightClick() {
89
+ setOpenMenu(true);
90
+ };
91
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Cell, _extends({}, props, {
86
92
  dataKey: dataKey
87
93
  }), link ? /*#__PURE__*/React.createElement("a", {
88
94
  onClick: function onClick() {
89
95
  return rowClick === null || rowClick === void 0 ? void 0 : rowClick(rowData);
90
96
  },
91
- className: "qbs-table-row-link"
92
- }, renderCell ? (_renderCell = renderCell(rowData)) === null || _renderCell === void 0 ? void 0 : _renderCell.cell : handleCellFormat(rowData[dataKey], type)) : /*#__PURE__*/React.createElement(React.Fragment, null, renderCell ? (_renderCell2 = renderCell(rowData)) === null || _renderCell2 === void 0 ? void 0 : _renderCell2.cell : handleCellFormat(rowData[dataKey], type)));
97
+ className: "qbs-table-row-link",
98
+ onContextMenu: function onContextMenu() {
99
+ // Additional actions on right-click, if needed
100
+ handleRightClick();
101
+ }
102
+ }, renderCell ? (_renderCell = renderCell(rowData)) === null || _renderCell === void 0 ? void 0 : _renderCell.cell : handleCellFormat(rowData[dataKey], type)) : /*#__PURE__*/React.createElement(React.Fragment, null, renderCell ? (_renderCell2 = renderCell(rowData)) === null || _renderCell2 === void 0 ? void 0 : _renderCell2.cell : handleCellFormat(rowData[dataKey], type))), openMenu && /*#__PURE__*/React.createElement("div", {
103
+ className: 'qbs-table-qbs-table-menu-dropdown-content'
104
+ }, /*#__PURE__*/React.createElement("a", {
105
+ key: 'sdf',
106
+ onClick: function onClick() {
107
+ return window.open(rowClick === null || rowClick === void 0 ? void 0 : rowClick(rowData));
108
+ },
109
+ className: "p-2 leading-7 hover:bg-background "
110
+ }, "sdfsdfsdf")));
93
111
  });
@@ -1,4 +1,4 @@
1
- import React, { useCallback } from 'react';
1
+ import React, { useCallback, useState } from 'react';
2
2
  import debounce from './utilities/debounce';
3
3
  import SearchInput from './utilities/SearchInput';
4
4
  import { getRowDisplayRange } from './utilities/tablecalc';
@@ -21,12 +21,16 @@ var ToolBar = function ToolBar(_ref) {
21
21
  onSelect = _ref.onSelect,
22
22
  dataLength = _ref.dataLength;
23
23
  var debouncedOnSearch = useCallback(debounce(onSearch != null ? onSearch : function () {}, 1000), [onSearch]);
24
+ var _useState = useState(searchValue),
25
+ searchParam = _useState[0],
26
+ setSearchParam = _useState[1];
24
27
  var handleSearch = useCallback(function (e) {
25
28
  if (debouncedOnSearch) {
26
29
  debouncedOnSearch(e);
27
30
  }
28
31
  }, [debouncedOnSearch]);
29
32
  var handleChange = useCallback(function (e) {
33
+ setSearchParam(e);
30
34
  if (asyncSearch) {
31
35
  handleSearch(e);
32
36
  } else {
@@ -56,7 +60,7 @@ var ToolBar = function ToolBar(_ref) {
56
60
  placeholder: "Search",
57
61
  handleChange: handleChange,
58
62
  handleSearch: handleSearch,
59
- searchValue: searchValue
63
+ searchValue: searchParam
60
64
  }), /*#__PURE__*/React.createElement("div", {
61
65
  className: "qbs-table-primary-filter"
62
66
  }, primaryFilter)), /*#__PURE__*/React.createElement("div", {
@@ -1,16 +1,27 @@
1
- import React from 'react';
2
- import { Tooltip, Whisper } from 'rsuite';
3
- var tooltip = function tooltip(titleL) {
4
- return /*#__PURE__*/React.createElement(Tooltip, null, titleL);
5
- };
1
+ import React, { useEffect, useState } from 'react';
6
2
  var TooltipComponent = function TooltipComponent(_ref) {
7
3
  var title = _ref.title,
8
4
  children = _ref.children;
9
- return /*#__PURE__*/React.createElement(Whisper, {
10
- placement: "bottom",
11
- controlId: "control-id-hover",
12
- trigger: "hover",
13
- speaker: tooltip(title)
14
- }, children);
5
+ var _useState = useState(0),
6
+ scrollY = _useState[0],
7
+ setScrollY = _useState[1];
8
+ var _useState2 = useState(true),
9
+ isScrollingUp = _useState2[0],
10
+ setIsScrollingUp = _useState2[1];
11
+ var handleScroll = function handleScroll() {
12
+ setIsScrollingUp(window.scrollY < scrollY);
13
+ setScrollY(window.scrollY);
14
+ };
15
+ useEffect(function () {
16
+ window.addEventListener('scroll', handleScroll);
17
+ return function () {
18
+ window.removeEventListener('scroll', handleScroll);
19
+ };
20
+ }, [scrollY]);
21
+ return /*#__PURE__*/React.createElement("div", {
22
+ className: "qbs-table-tooltip " + (!isScrollingUp ? 'up' : 'down')
23
+ }, /*#__PURE__*/React.createElement("span", null, children), /*#__PURE__*/React.createElement("span", {
24
+ className: "tooltiptext"
25
+ }, title));
15
26
  };
16
27
  export default TooltipComponent;
@@ -5,13 +5,15 @@ exports.__esModule = true;
5
5
  exports.ExpandCell = exports.CustomTableCell = exports.CheckCell = exports.ActionCell = void 0;
6
6
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
7
7
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
  var _Cell = _interopRequireDefault(require("../Cell"));
10
- var _menuDropDown = _interopRequireDefault(require("./utilities/menuDropDown"));
11
10
  var _handleFormatCell = require("./utilities/handleFormatCell");
11
+ var _menuDropDown = _interopRequireDefault(require("./utilities/menuDropDown"));
12
12
  var _excluded = ["rowData", "onChange", "checkedKeys", "dataKey", "dataTheme"],
13
13
  _excluded2 = ["rowData", "dataKey", "expandedRowKeys", "onChange"],
14
14
  _excluded3 = ["rowData", "renderCell", "toolTip", "dataKey", "onChange", "rowClick", "type", "link"];
15
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
15
17
  var CHECKBOX_LINE_HEIGHT = '36px';
16
18
  var CheckCell = /*#__PURE__*/_react["default"].memo(function (_ref) {
17
19
  var rowData = _ref.rowData,
@@ -90,13 +92,31 @@ var CustomTableCell = /*#__PURE__*/_react["default"].memo(function (_ref4) {
90
92
  type = _ref4.type,
91
93
  link = _ref4.link,
92
94
  props = (0, _objectWithoutPropertiesLoose2["default"])(_ref4, _excluded3);
93
- return /*#__PURE__*/_react["default"].createElement(_Cell["default"], (0, _extends2["default"])({}, props, {
95
+ var _useState = (0, _react.useState)(false),
96
+ openMenu = _useState[0],
97
+ setOpenMenu = _useState[1];
98
+ var handleRightClick = function handleRightClick() {
99
+ setOpenMenu(true);
100
+ };
101
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Cell["default"], (0, _extends2["default"])({}, props, {
94
102
  dataKey: dataKey
95
103
  }), link ? /*#__PURE__*/_react["default"].createElement("a", {
96
104
  onClick: function onClick() {
97
105
  return rowClick === null || rowClick === void 0 ? void 0 : rowClick(rowData);
98
106
  },
99
- className: "qbs-table-row-link"
100
- }, renderCell ? (_renderCell = renderCell(rowData)) === null || _renderCell === void 0 ? void 0 : _renderCell.cell : (0, _handleFormatCell.handleCellFormat)(rowData[dataKey], type)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, renderCell ? (_renderCell2 = renderCell(rowData)) === null || _renderCell2 === void 0 ? void 0 : _renderCell2.cell : (0, _handleFormatCell.handleCellFormat)(rowData[dataKey], type)));
107
+ className: "qbs-table-row-link",
108
+ onContextMenu: function onContextMenu() {
109
+ // Additional actions on right-click, if needed
110
+ handleRightClick();
111
+ }
112
+ }, renderCell ? (_renderCell = renderCell(rowData)) === null || _renderCell === void 0 ? void 0 : _renderCell.cell : (0, _handleFormatCell.handleCellFormat)(rowData[dataKey], type)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, renderCell ? (_renderCell2 = renderCell(rowData)) === null || _renderCell2 === void 0 ? void 0 : _renderCell2.cell : (0, _handleFormatCell.handleCellFormat)(rowData[dataKey], type))), openMenu && /*#__PURE__*/_react["default"].createElement("div", {
113
+ className: 'qbs-table-qbs-table-menu-dropdown-content'
114
+ }, /*#__PURE__*/_react["default"].createElement("a", {
115
+ key: 'sdf',
116
+ onClick: function onClick() {
117
+ return window.open(rowClick === null || rowClick === void 0 ? void 0 : rowClick(rowData));
118
+ },
119
+ className: "p-2 leading-7 hover:bg-background "
120
+ }, "sdfsdfsdf")));
101
121
  });
102
122
  exports.CustomTableCell = CustomTableCell;
@@ -28,12 +28,16 @@ var ToolBar = function ToolBar(_ref) {
28
28
  onSelect = _ref.onSelect,
29
29
  dataLength = _ref.dataLength;
30
30
  var debouncedOnSearch = (0, _react.useCallback)((0, _debounce["default"])(onSearch != null ? onSearch : function () {}, 1000), [onSearch]);
31
+ var _useState = (0, _react.useState)(searchValue),
32
+ searchParam = _useState[0],
33
+ setSearchParam = _useState[1];
31
34
  var handleSearch = (0, _react.useCallback)(function (e) {
32
35
  if (debouncedOnSearch) {
33
36
  debouncedOnSearch(e);
34
37
  }
35
38
  }, [debouncedOnSearch]);
36
39
  var handleChange = (0, _react.useCallback)(function (e) {
40
+ setSearchParam(e);
37
41
  if (asyncSearch) {
38
42
  handleSearch(e);
39
43
  } else {
@@ -63,7 +67,7 @@ var ToolBar = function ToolBar(_ref) {
63
67
  placeholder: "Search",
64
68
  handleChange: handleChange,
65
69
  handleSearch: handleSearch,
66
- searchValue: searchValue
70
+ searchValue: searchParam
67
71
  }), /*#__PURE__*/_react["default"].createElement("div", {
68
72
  className: "qbs-table-primary-filter"
69
73
  }, primaryFilter)), /*#__PURE__*/_react["default"].createElement("div", {
@@ -1,22 +1,34 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  exports.__esModule = true;
5
4
  exports["default"] = void 0;
6
- var _react = _interopRequireDefault(require("react"));
7
- var _rsuite = require("rsuite");
8
- var tooltip = function tooltip(titleL) {
9
- return /*#__PURE__*/_react["default"].createElement(_rsuite.Tooltip, null, titleL);
10
- };
5
+ var _react = _interopRequireWildcard(require("react"));
6
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
7
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
11
8
  var TooltipComponent = function TooltipComponent(_ref) {
12
9
  var title = _ref.title,
13
10
  children = _ref.children;
14
- return /*#__PURE__*/_react["default"].createElement(_rsuite.Whisper, {
15
- placement: "bottom",
16
- controlId: "control-id-hover",
17
- trigger: "hover",
18
- speaker: tooltip(title)
19
- }, children);
11
+ var _useState = (0, _react.useState)(0),
12
+ scrollY = _useState[0],
13
+ setScrollY = _useState[1];
14
+ var _useState2 = (0, _react.useState)(true),
15
+ isScrollingUp = _useState2[0],
16
+ setIsScrollingUp = _useState2[1];
17
+ var handleScroll = function handleScroll() {
18
+ setIsScrollingUp(window.scrollY < scrollY);
19
+ setScrollY(window.scrollY);
20
+ };
21
+ (0, _react.useEffect)(function () {
22
+ window.addEventListener('scroll', handleScroll);
23
+ return function () {
24
+ window.removeEventListener('scroll', handleScroll);
25
+ };
26
+ }, [scrollY]);
27
+ return /*#__PURE__*/_react["default"].createElement("div", {
28
+ className: "qbs-table-tooltip " + (!isScrollingUp ? 'up' : 'down')
29
+ }, /*#__PURE__*/_react["default"].createElement("span", null, children), /*#__PURE__*/_react["default"].createElement("span", {
30
+ className: "tooltiptext"
31
+ }, title));
20
32
  };
21
33
  var _default = TooltipComponent;
22
34
  exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qbs-react-grid",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "A React table component",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -1,11 +1,10 @@
1
- import React from 'react';
1
+ import React, { useState } from 'react';
2
2
 
3
3
  import Cell from '../Cell';
4
- import MenuDropDown from './utilities/menuDropDown';
5
4
  import { handleCellFormat } from './utilities/handleFormatCell';
5
+ import MenuDropDown from './utilities/menuDropDown';
6
6
 
7
7
  const CHECKBOX_LINE_HEIGHT = '36px';
8
-
9
8
  export const CheckCell: React.FC<any> = React.memo(
10
9
  ({ rowData, onChange, checkedKeys, dataKey, dataTheme, ...props }) => (
11
10
  <Cell {...props} style={{ padding: 0 }} dataTheme={dataTheme}>
@@ -63,16 +62,40 @@ export const ExpandCell: React.FC<any> = React.memo(
63
62
  );
64
63
  export const CustomTableCell: React.FC<any> = React.memo(
65
64
  ({ rowData, renderCell, toolTip, dataKey, onChange, rowClick, type, link, ...props }) => {
65
+ const [openMenu, setOpenMenu] = useState(false);
66
+ const handleRightClick = () => {
67
+ setOpenMenu(true);
68
+ };
66
69
  return (
67
- <Cell {...props} dataKey={dataKey}>
68
- {link ? (
69
- <a onClick={() => rowClick?.(rowData)} className="qbs-table-row-link">
70
- {renderCell ? renderCell(rowData)?.cell : handleCellFormat(rowData[dataKey], type)}
71
- </a>
72
- ) : (
73
- <>{renderCell ? renderCell(rowData)?.cell : handleCellFormat(rowData[dataKey], type)}</>
70
+ <>
71
+ <Cell {...props} dataKey={dataKey}>
72
+ {link ? (
73
+ <a
74
+ onClick={() => rowClick?.(rowData)}
75
+ className="qbs-table-row-link"
76
+ onContextMenu={() => {
77
+ // Additional actions on right-click, if needed
78
+ handleRightClick();
79
+ }}
80
+ >
81
+ {renderCell ? renderCell(rowData)?.cell : handleCellFormat(rowData[dataKey], type)}
82
+ </a>
83
+ ) : (
84
+ <>{renderCell ? renderCell(rowData)?.cell : handleCellFormat(rowData[dataKey], type)}</>
85
+ )}
86
+ </Cell>
87
+ {openMenu && (
88
+ <div className={'qbs-table-qbs-table-menu-dropdown-content'}>
89
+ <a
90
+ key={'sdf'}
91
+ onClick={() => window.open(rowClick?.(rowData))}
92
+ className={`p-2 leading-7 hover:bg-background `}
93
+ >
94
+ sdfsdfsdf
95
+ </a>
96
+ </div>
74
97
  )}
75
- </Cell>
98
+ </>
76
99
  );
77
100
  }
78
101
  );
@@ -1,4 +1,4 @@
1
- import React, { useCallback } from 'react';
1
+ import React, { useCallback, useState } from 'react';
2
2
 
3
3
  import { QbsTableToolbarProps } from './commontypes';
4
4
  import debounce from './utilities/debounce';
@@ -23,7 +23,7 @@ const ToolBar: React.FC<QbsTableToolbarProps> = ({
23
23
  dataLength
24
24
  }) => {
25
25
  const debouncedOnSearch = useCallback(debounce(onSearch ?? (() => {}), 1000), [onSearch]);
26
-
26
+ const [searchParam, setSearchParam] = useState<string | undefined>(searchValue);
27
27
  const handleSearch = useCallback(
28
28
  (e?: string) => {
29
29
  if (debouncedOnSearch) {
@@ -35,6 +35,7 @@ const ToolBar: React.FC<QbsTableToolbarProps> = ({
35
35
 
36
36
  const handleChange = useCallback(
37
37
  (e?: string) => {
38
+ setSearchParam(e);
38
39
  if (asyncSearch) {
39
40
  handleSearch(e);
40
41
  } else {
@@ -61,7 +62,7 @@ const ToolBar: React.FC<QbsTableToolbarProps> = ({
61
62
  placeholder="Search"
62
63
  handleChange={handleChange}
63
64
  handleSearch={handleSearch}
64
- searchValue={searchValue}
65
+ searchValue={searchParam}
65
66
  />
66
67
  )}
67
68
  <div className="qbs-table-primary-filter">{primaryFilter}</div>
@@ -1,19 +1,25 @@
1
- import React from 'react';
2
- import { Tooltip, Whisper } from 'rsuite';
1
+ import React, { useEffect, useState } from 'react';
3
2
 
4
- const tooltip = (titleL: string) => {
5
- return <Tooltip>{titleL}</Tooltip>;
6
- };
7
3
  const TooltipComponent: React.FC<any> = ({ title, children }) => {
4
+ const [scrollY, setScrollY] = useState(0);
5
+ const [isScrollingUp, setIsScrollingUp] = useState(true);
6
+
7
+ const handleScroll = () => {
8
+ setIsScrollingUp(window.scrollY < scrollY);
9
+ setScrollY(window.scrollY);
10
+ };
11
+
12
+ useEffect(() => {
13
+ window.addEventListener('scroll', handleScroll);
14
+ return () => {
15
+ window.removeEventListener('scroll', handleScroll);
16
+ };
17
+ }, [scrollY]);
8
18
  return (
9
- <Whisper
10
- placement="bottom"
11
- controlId="control-id-hover"
12
- trigger="hover"
13
- speaker={tooltip(title)}
14
- >
15
- {children}
16
- </Whisper>
19
+ <div className={`qbs-table-tooltip ${!isScrollingUp ? 'up' : 'down'}`}>
20
+ <span>{children}</span>
21
+ <span className="tooltiptext">{title}</span>
22
+ </div>
17
23
  );
18
24
  };
19
25