@insticc/react-datagrid-2 1.1.13 → 1.1.16

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.
package/build/index.js ADDED
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _index = _interopRequireDefault(require("./wrapper/index.js"));
4
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
5
+ module.exports = {
6
+ DataGrid: _index["default"]
7
+ };
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.renderIcon = exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _semanticUiReact = require("semantic-ui-react");
11
+ var _material = require("@mui/material");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 && {}.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
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
16
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
17
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
19
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
20
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
21
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
22
+ /**
23
+ * Renders the action button icon.
24
+ * If `icon` is a string, it will render it as an image.
25
+ * Otherwise, it will render the provided React element.
26
+ * @returns the action button icon.
27
+ */
28
+ var renderIcon = exports.renderIcon = function renderIcon(icon, name) {
29
+ if (typeof icon === 'string') {
30
+ return /*#__PURE__*/_react["default"].createElement("img", {
31
+ src: icon,
32
+ alt: name,
33
+ height: 15,
34
+ style: {
35
+ marginRight: '.2em'
36
+ }
37
+ });
38
+ } else {
39
+ return icon;
40
+ }
41
+ };
42
+ var ActionButton = function ActionButton(_ref) {
43
+ var table = _ref.table,
44
+ _ref$toggle = _ref.toggle,
45
+ toggle = _ref$toggle === void 0 ? false : _ref$toggle,
46
+ _ref$active = _ref.active,
47
+ active = _ref$active === void 0 ? false : _ref$active,
48
+ _ref$name = _ref.name,
49
+ name = _ref$name === void 0 ? '' : _ref$name,
50
+ tooltip = _ref.tooltip,
51
+ onClick = _ref.onClick,
52
+ _ref$color = _ref.color,
53
+ color = _ref$color === void 0 ? 'blue' : _ref$color,
54
+ _ref$icon = _ref.icon,
55
+ icon = _ref$icon === void 0 ? null : _ref$icon,
56
+ _ref$selectionMode = _ref.selectionMode,
57
+ selectionMode = _ref$selectionMode === void 0 ? 'always' : _ref$selectionMode,
58
+ _ref$confirmMessage = _ref.confirmMessage,
59
+ confirmMessage = _ref$confirmMessage === void 0 ? 'Are you sure you want to perform this action?' : _ref$confirmMessage,
60
+ _ref$hasConfirmMessag = _ref.hasConfirmMessage,
61
+ hasConfirmMessage = _ref$hasConfirmMessag === void 0 ? true : _ref$hasConfirmMessag,
62
+ _ref$disabled = _ref.disabled,
63
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled;
64
+ var _useState = (0, _react.useState)(false),
65
+ _useState2 = _slicedToArray(_useState, 2),
66
+ enableConfirmMessage = _useState2[0],
67
+ setEnableConfirmMessage = _useState2[1];
68
+
69
+ /**
70
+ * Determines if the action button should be disabled.
71
+ * The button will be disabled based on the selection mode provided and the number of selected rows.
72
+ * - `single`: The button is enabled only when exactly one row is selected.
73
+ * - `multi`: The button is enabled when one or more rows are selected.
74
+ * - `always`: The button is never disabled.
75
+ * @param {Object} table - The data grid table instance.
76
+ * @returns {boolean} `true` if the action button should be disabled; otherwise, `false`.
77
+ */
78
+ var shouldDisableActionButton = function shouldDisableActionButton(table) {
79
+ var selectedRowCount = table.getSelectedRowModel().flatRows.length;
80
+ if (selectionMode === 'single') {
81
+ return selectedRowCount !== 1;
82
+ } else if (selectionMode === 'multi') {
83
+ return selectedRowCount < 1;
84
+ } else {
85
+ return false;
86
+ }
87
+ };
88
+
89
+ /**
90
+ * Handles the confirmation action.
91
+ * If the confirmation message is enabled, it will close the confirmation window and proceed with the action.
92
+ */
93
+ var handleConfirm = function handleConfirm() {
94
+ setEnableConfirmMessage(false);
95
+ handleClick(table);
96
+ };
97
+
98
+ /**
99
+ * Executes the action associated with the button.
100
+ * It retrieves the selected rows based on the selection mode and passes them to the `onClick` callback.
101
+ * @param {Object} table - The data grid table instance.
102
+ */
103
+ var handleClick = function handleClick(table) {
104
+ var rows = getSelectedRows(table);
105
+ onClick(rows);
106
+ };
107
+
108
+ /**
109
+ * Retrieves the data of the selected rows based on the selection mode.
110
+ * - `single`: Returns the data of the first selected row.
111
+ * - `multi`: Returns the data of all selected rows.
112
+ * - `always`: Returns the data of all rows in the current view.
113
+ * @param {Object} table - The data grid table instance.
114
+ * @returns {Object|Array} The data of the selected rows.
115
+ */
116
+ var getSelectedRows = function getSelectedRows(table) {
117
+ var selectedRows = table.getSelectedRowModel().flatRows;
118
+ if (selectionMode === 'single') {
119
+ var _selectedRows$;
120
+ return (_selectedRows$ = selectedRows[0]) === null || _selectedRows$ === void 0 ? void 0 : _selectedRows$.original;
121
+ } else if (selectionMode === 'multi') {
122
+ return selectedRows.map(function (row) {
123
+ return row.original;
124
+ });
125
+ } else {
126
+ return table.getPrePaginationRowModel().rows.map(function (row) {
127
+ return row.original;
128
+ });
129
+ }
130
+ };
131
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
132
+ title: tooltip || name,
133
+ arrow: true
134
+ }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, _extends({
135
+ toggle: toggle,
136
+ active: active,
137
+ disabled: disabled || shouldDisableActionButton(table),
138
+ onClick: function onClick() {
139
+ return hasConfirmMessage ? setEnableConfirmMessage(true) : handleConfirm();
140
+ },
141
+ icon: renderIcon(icon, name)
142
+ }, name ? {
143
+ content: name
144
+ } : {}, {
145
+ basic: !active,
146
+ color: color,
147
+ style: {
148
+ display: 'flex',
149
+ height: '40px',
150
+ alignItems: 'center',
151
+ justifyContent: 'center'
152
+ }
153
+ })))), /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Confirm, {
154
+ style: {
155
+ height: 'fit-content',
156
+ textAlign: 'center',
157
+ top: 'auto',
158
+ right: 'auto',
159
+ left: 'auto',
160
+ bottom: 'auto',
161
+ fontSize: '14px'
162
+ },
163
+ open: enableConfirmMessage,
164
+ size: "mini",
165
+ content: confirmMessage,
166
+ cancelButton: /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
167
+ content: "No",
168
+ size: "small",
169
+ color: "red",
170
+ icon: "cancel"
171
+ }),
172
+ confirmButton: /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
173
+ content: "Yes",
174
+ size: "small",
175
+ color: "green",
176
+ icon: "check"
177
+ }),
178
+ onCancel: function onCancel() {
179
+ return setEnableConfirmMessage(false);
180
+ },
181
+ onConfirm: function onConfirm() {
182
+ return handleConfirm();
183
+ }
184
+ }));
185
+ };
186
+ ActionButton.propTypes = {
187
+ table: _propTypes["default"].object.isRequired,
188
+ // the data grid table
189
+ name: _propTypes["default"].string,
190
+ // the name of the action button
191
+ tooltip: _propTypes["default"].string,
192
+ // the tooltip for the action button
193
+ onClick: _propTypes["default"].func.isRequired,
194
+ // the callback to be called when the action button is clicked
195
+ color: _propTypes["default"].oneOf(['blue', 'red', 'green', 'yellow', 'orange', 'black', 'grey', 'purple', 'teal', 'brown', 'violet', 'purple', 'olive', 'pink']),
196
+ // the color of the action button
197
+ icon: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string]),
198
+ // the action button icon
199
+ selectionMode: _propTypes["default"].oneOf(['single', 'multi', 'always']),
200
+ // the action button selection mode
201
+ confirmMessage: _propTypes["default"].oneOfType([_propTypes["default"].element, _propTypes["default"].string]),
202
+ // the action confirming message
203
+ hasConfirmMessage: _propTypes["default"].bool,
204
+ // defines whether there is a confirm message for the action button
205
+ disabled: _propTypes["default"].bool // defines whether the button is disabled
206
+ };
207
+
208
+ // ActionButton.defaultProps = {
209
+ // color: 'blue',
210
+ // selectionMode: 'always',
211
+ // confirmMessage: 'Are you sure you want to perform this action?',
212
+ // hasConfirmMessage: true,
213
+ // }
214
+ var _default = exports["default"] = ActionButton;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _material = require("@mui/material");
9
+ var _semanticUiReact = require("semantic-ui-react");
10
+ var _reactBootstrap = require("react-bootstrap");
11
+ var _filters = require("./utils/filters");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ var ColumnFilter = function ColumnFilter(props) {
14
+ return /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_material.MenuItem, {
15
+ key: "regex",
16
+ onClick: function onClick() {
17
+ return props.onSelectFilterMode('regex');
18
+ }
19
+ }, /*#__PURE__*/_react["default"].createElement("div", {
20
+ style: {
21
+ display: 'flex',
22
+ justifyContent: 'space-between',
23
+ width: '100%'
24
+ }
25
+ }, /*#__PURE__*/_react["default"].createElement("div", {
26
+ style: {
27
+ display: 'flex',
28
+ gap: '5px'
29
+ }
30
+ }, /*#__PURE__*/_react["default"].createElement("span", {
31
+ style: {
32
+ minWidth: '36px'
33
+ }
34
+ }, /*#__PURE__*/_react["default"].createElement("b", null, "(.*)")), /*#__PURE__*/_react["default"].createElement("span", null, "Regex")), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.OverlayTrigger, {
35
+ placement: "right-start",
36
+ key: "regex-tooltip",
37
+ overlay: /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Tooltip, {
38
+ id: "tooltip-regex",
39
+ style: {
40
+ zIndex: 99999
41
+ }
42
+ }, _filters.regexFilterTooltip)
43
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
44
+ name: "info circle",
45
+ fitted: true
46
+ })))), /*#__PURE__*/_react["default"].createElement(_material.MenuItem, {
47
+ key: "logical",
48
+ onClick: function onClick() {
49
+ return props.onSelectFilterMode('logical');
50
+ }
51
+ }, /*#__PURE__*/_react["default"].createElement("div", {
52
+ style: {
53
+ display: 'flex',
54
+ justifyContent: 'space-between',
55
+ width: '100%'
56
+ }
57
+ }, /*#__PURE__*/_react["default"].createElement("div", {
58
+ style: {
59
+ display: 'flex',
60
+ gap: '5px'
61
+ }
62
+ }, /*#__PURE__*/_react["default"].createElement("span", {
63
+ style: {
64
+ minWidth: '36px'
65
+ }
66
+ }, /*#__PURE__*/_react["default"].createElement("b", null, "\u03A8")), /*#__PURE__*/_react["default"].createElement("span", null, "Logical")), /*#__PURE__*/_react["default"].createElement(_reactBootstrap.OverlayTrigger, {
67
+ placement: "right-start",
68
+ key: "logical-tooltip",
69
+ overlay: /*#__PURE__*/_react["default"].createElement(_reactBootstrap.Tooltip, {
70
+ id: "tooltip-logical",
71
+ style: {
72
+ zIndex: 99999
73
+ }
74
+ }, _filters.logicalFilterTooltip)
75
+ }, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
76
+ name: "info circle",
77
+ fitted: true
78
+ })))), /*#__PURE__*/_react["default"].createElement(_material.Divider, {
79
+ style: {
80
+ borderColor: 'rgba(0, 0, 0, 0.51)'
81
+ }
82
+ }), props.filterOptions.map(function (filter, index) {
83
+ return /*#__PURE__*/_react["default"].createElement("div", {
84
+ key: filter.option
85
+ }, /*#__PURE__*/_react["default"].createElement(_material.MenuItem, {
86
+ onClick: function onClick() {
87
+ return props.onSelectFilterMode(filter.option);
88
+ }
89
+ }, /*#__PURE__*/_react["default"].createElement("div", {
90
+ style: {
91
+ display: 'flex',
92
+ gap: '5px'
93
+ }
94
+ }, /*#__PURE__*/_react["default"].createElement("span", {
95
+ style: {
96
+ minWidth: '36px'
97
+ }
98
+ }, /*#__PURE__*/_react["default"].createElement("b", null, filter.symbol)), /*#__PURE__*/_react["default"].createElement("span", null, filter.label))), filter.divider && /*#__PURE__*/_react["default"].createElement(_material.Divider, {
99
+ style: {
100
+ borderColor: 'rgba(0, 0, 0, 0.51)'
101
+ }
102
+ }));
103
+ }));
104
+ };
105
+ var _default = exports["default"] = ColumnFilter;
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _material = require("@mui/material");
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _semanticUiReact = require("semantic-ui-react");
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var XLSX = _interopRequireWildcard(require("xlsx"));
12
+ var _jspdf = require("jspdf");
13
+ var _jspdfAutotable = _interopRequireDefault(require("jspdf-autotable"));
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 && {}.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
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
17
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
18
+ var ExportActions = function ExportActions(props) {
19
+ /**
20
+ * Exports the data grid data to an excel file.
21
+ * @returns Error if the data is invalid or empty.
22
+ */
23
+ var handleExcelExportData = function handleExcelExportData() {
24
+ var data = props.data;
25
+ if (!Array.isArray(data) || data.length === 0) {
26
+ console.log('Invalid data format or empty data array');
27
+ return;
28
+ }
29
+ var fieldNames = Object.keys(data[0]);
30
+ var dataArray = [fieldNames];
31
+ data.forEach(function (item) {
32
+ var rowData = [];
33
+ fieldNames.forEach(function (fieldName) {
34
+ var value = item[fieldName];
35
+ if (_typeof(value) === 'object' && value !== null) {
36
+ rowData.push(JSON.stringify(value));
37
+ } else {
38
+ rowData.push(value);
39
+ }
40
+ });
41
+ dataArray.push(rowData);
42
+ });
43
+ var worksheet = XLSX.utils.aoa_to_sheet(dataArray);
44
+ var workbook = XLSX.utils.book_new();
45
+ XLSX.utils.book_append_sheet(workbook, worksheet, 'All Data');
46
+ XLSX.writeFile(workbook, 'all_data.xlsx');
47
+ };
48
+
49
+ /**
50
+ * Exports the data grid data to a pdf file.
51
+ * @returns Error if the data is invalid or empty.
52
+ */
53
+ var handlePdfExportData = function handlePdfExportData() {
54
+ var data = props.data;
55
+ if (!Array.isArray(data) || data.length === 0) {
56
+ console.log('Invalid data format or empty data array');
57
+ return;
58
+ }
59
+ var doc = new _jspdf.jsPDF();
60
+ var fileName = "all_data";
61
+ var tableData = data.map(function (item) {
62
+ return Object.values(item);
63
+ });
64
+ var tableHeaders = Object.keys(data[0]);
65
+ (0, _jspdfAutotable["default"])(doc, {
66
+ head: [tableHeaders],
67
+ body: tableData
68
+ });
69
+ doc.save("".concat(fileName, ".pdf"));
70
+ };
71
+ return /*#__PURE__*/_react["default"].createElement("div", {
72
+ style: {
73
+ display: 'flex',
74
+ flexDirection: 'row',
75
+ gap: '.5em'
76
+ }
77
+ }, props.hasExcelExport && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
78
+ title: "Export All Data to Excel",
79
+ arrow: true
80
+ }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
81
+ circular: true,
82
+ onClick: handleExcelExportData,
83
+ icon: /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
84
+ name: "file excel"
85
+ }),
86
+ content: "Export All Data",
87
+ inverted: true,
88
+ color: "green"
89
+ }))), props.hasPdfExport && /*#__PURE__*/_react["default"].createElement(_material.Tooltip, {
90
+ title: "Export All Data to PDF",
91
+ arrow: true
92
+ }, /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Button, {
93
+ circular: true,
94
+ onClick: handlePdfExportData,
95
+ icon: /*#__PURE__*/_react["default"].createElement(_semanticUiReact.Icon, {
96
+ name: "file pdf"
97
+ }),
98
+ content: "Export All Data",
99
+ inverted: true,
100
+ color: "red"
101
+ }))));
102
+ };
103
+ ExportActions.propTypes = {
104
+ hasExcelExport: _propTypes["default"].bool.isRequired,
105
+ // defines whether the excel export should be shown
106
+ hasPdfExport: _propTypes["default"].bool.isRequired,
107
+ // defines whether the pdf export should be shown
108
+ table: _propTypes["default"].object.isRequired,
109
+ // the data grid table
110
+ data: _propTypes["default"].array.isRequired,
111
+ // the data grid data
112
+ columns: _propTypes["default"].array.isRequired // the data grid columns
113
+ };
114
+ var _default = exports["default"] = ExportActions;
Binary file