flipper-ui 0.25.12 → 0.25.13

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.
@@ -59,7 +59,8 @@ var defaultPagination = {
59
59
  disabled: false,
60
60
  showFirstButton: false,
61
61
  showLastButton: false,
62
- rowsPerPageOptions: [5, 10, 20]
62
+ rowsPerPageOptions: [5, 10, 20],
63
+ clickable: false
63
64
  };
64
65
 
65
66
  var sliceData = function sliceData(data, page, rowsPerPage) {
@@ -8,6 +8,7 @@ interface DataTablePaginationActionsProps {
8
8
  interface DataTablePaginationActionsBuilder {
9
9
  showFirstButton?: boolean;
10
10
  showLastButton?: boolean;
11
+ clickable?: boolean;
11
12
  }
12
- export declare const makeDataTablePaginationActions: ({ showFirstButton, showLastButton }: DataTablePaginationActionsBuilder) => ({ count, page, rowsPerPage, onChangePage }: DataTablePaginationActionsProps) => JSX.Element;
13
+ export declare const makeDataTablePaginationActions: ({ showFirstButton, showLastButton, clickable }: DataTablePaginationActionsBuilder) => ({ count, page, rowsPerPage, onChangePage }: DataTablePaginationActionsProps) => JSX.Element;
13
14
  export {};
@@ -27,7 +27,8 @@ var PAGINATION_WRAPPER_STYLE = {
27
27
 
28
28
  var makeDataTablePaginationActions = function makeDataTablePaginationActions(_ref) {
29
29
  var showFirstButton = _ref.showFirstButton,
30
- showLastButton = _ref.showLastButton;
30
+ showLastButton = _ref.showLastButton,
31
+ clickable = _ref.clickable;
31
32
  return function (_ref2) {
32
33
  var count = _ref2.count,
33
34
  page = _ref2.page,
@@ -55,19 +56,19 @@ var makeDataTablePaginationActions = function makeDataTablePaginationActions(_re
55
56
  style: PAGINATION_WRAPPER_STYLE
56
57
  }, showFirstButton && /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
57
58
  onClick: handleFirstPageButtonClick,
58
- disabled: page === 0,
59
+ disabled: page === 0 || clickable,
59
60
  "aria-label": "first page"
60
61
  }, /*#__PURE__*/_react["default"].createElement(_FirstPage["default"], null)), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
61
62
  onClick: handleBackButtonClick,
62
- disabled: page === 0,
63
+ disabled: page === 0 || clickable,
63
64
  "aria-label": "previous page"
64
65
  }, /*#__PURE__*/_react["default"].createElement(_KeyboardArrowLeft["default"], null)), /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
65
66
  onClick: handleNextButtonClick,
66
- disabled: page >= totalPages,
67
+ disabled: page >= totalPages || clickable,
67
68
  "aria-label": "next page"
68
69
  }, /*#__PURE__*/_react["default"].createElement(_KeyboardArrowRight["default"], null)), showLastButton && /*#__PURE__*/_react["default"].createElement(_IconButton["default"], {
69
70
  onClick: handleLastPageButtonClick,
70
- disabled: page >= totalPages,
71
+ disabled: page >= totalPages || clickable,
71
72
  "aria-label": "last page"
72
73
  }, /*#__PURE__*/_react["default"].createElement(_LastPage["default"], null)));
73
74
  };
@@ -0,0 +1,81 @@
1
+ import React, { MutableRefObject, CSSProperties } from 'react';
2
+ import { ColumnSpec, Data, DataTableController, Errors, PaginationOptions, RowViewComponent, StackView } from './types';
3
+ export declare type DataTableProps<D extends Data, V extends StackView = {}> = {
4
+ /**
5
+ * The data to be shown in the table
6
+ */
7
+ data: D[];
8
+ /**
9
+ * The total elements present in query
10
+ */
11
+ totalElements: number;
12
+ /**
13
+ * Change current page handler
14
+ */
15
+ handleChangePage: (page: number) => void;
16
+ /**
17
+ * Per page value
18
+ */
19
+ perPage: number;
20
+ /**
21
+ * Change page handler
22
+ */
23
+ handleChangePerPage: (value: number) => void;
24
+ /**
25
+ * Actual page
26
+ */
27
+ page: number;
28
+ /**
29
+ * Errors as an object where the key is the ID of the row and the value is
30
+ * a Set with the fields of error
31
+ */
32
+ errors?: Errors<D>;
33
+ /**
34
+ * The columns specification
35
+ */
36
+ columns: ColumnSpec<D>[];
37
+ /**
38
+ * Hide the table header
39
+ */
40
+ noHeader?: boolean;
41
+ /**
42
+ * Component to show when there are no data
43
+ */
44
+ componentForEmpty?: React.ReactNode;
45
+ /**
46
+ * Custom style to be applied to the table body
47
+ */
48
+ bodyStyle?: CSSProperties;
49
+ /**
50
+ * Custom style to be applied to the table head
51
+ */
52
+ headStyle?: CSSProperties;
53
+ /**
54
+ * Custom style to be applied to all rows of the table body
55
+ */
56
+ bodyRowStyle?: CSSProperties;
57
+ /**
58
+ * Custom style to be applied to all rows of the table head
59
+ */
60
+ headRowStyle?: CSSProperties;
61
+ /**
62
+ * Height of a hidden row, when you need to have some blank space in case
63
+ * you fill in the pagination.rowsPerPage
64
+ */
65
+ hiddenRowHeight?: number;
66
+ /**
67
+ * The pagination configuration
68
+ */
69
+ pagination?: Partial<PaginationOptions>;
70
+ /**
71
+ * A React MutableRefObject for the row controller
72
+ */
73
+ controllerRef?: MutableRefObject<DataTableController<D, V> | undefined>;
74
+ /**
75
+ * Custom rowViews used as a Stac
76
+ */
77
+ rowViews?: Record<keyof V, RowViewComponent<D>>;
78
+ onRowClick?: (event: React.MouseEvent<HTMLTableRowElement>, rowData: D) => void;
79
+ };
80
+ export declare const DataTableQueryPaginated: <D extends Data, V extends Record<string, unknown>>(props: DataTableProps<D, V>) => JSX.Element;
81
+ export default DataTableQueryPaginated;
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = exports.DataTableQueryPaginated = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _last = _interopRequireDefault(require("ramda/es/last"));
19
+
20
+ var _Table = _interopRequireDefault(require("@material-ui/core/Table"));
21
+
22
+ var _TableBody = _interopRequireDefault(require("@material-ui/core/TableBody"));
23
+
24
+ var _TableCell = _interopRequireDefault(require("@material-ui/core/TableCell"));
25
+
26
+ var _TableContainer = _interopRequireDefault(require("@material-ui/core/TableContainer"));
27
+
28
+ var _TableHead = _interopRequireDefault(require("@material-ui/core/TableHead"));
29
+
30
+ var _TableRow = _interopRequireDefault(require("@material-ui/core/TableRow"));
31
+
32
+ var _Paper = _interopRequireDefault(require("@material-ui/core/Paper"));
33
+
34
+ var _TablePagination = _interopRequireDefault(require("@material-ui/core/TablePagination"));
35
+
36
+ var _TableFooter = _interopRequireDefault(require("@material-ui/core/TableFooter"));
37
+
38
+ var _types = require("./types");
39
+
40
+ var _useRowsState2 = require("./useRowsState");
41
+
42
+ var _Rows = require("./Rows");
43
+
44
+ var _DataTablePaginationActions = require("./DataTablePaginationActions");
45
+
46
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
47
+
48
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
49
+
50
+ var defaultPagination = {
51
+ rowsPerPage: 10,
52
+ labelRowsPerPage: 'Rows per page:',
53
+ labelDisplayedRows: function labelDisplayedRows(_ref) {
54
+ var from = _ref.from,
55
+ to = _ref.to,
56
+ count = _ref.count;
57
+ return "".concat(from, "-").concat(to, " of ").concat(count !== -1 ? count : "more than ".concat(to));
58
+ },
59
+ disabled: false,
60
+ showFirstButton: false,
61
+ showLastButton: false,
62
+ clickable: true,
63
+ rowsPerPageOptions: [5, 10, 25, 50]
64
+ };
65
+
66
+ var DataTableQueryPaginated = function DataTableQueryPaginated(props) {
67
+ var pagination = _objectSpread(_objectSpread({}, defaultPagination), props.pagination);
68
+
69
+ var data = props.data,
70
+ totalElements = props.totalElements,
71
+ handleChangePage = props.handleChangePage,
72
+ perPage = props.perPage,
73
+ handleChangePerPage = props.handleChangePerPage,
74
+ columns = props.columns,
75
+ page = props.page,
76
+ rowViews = props.rowViews,
77
+ onRowClick = props.onRowClick,
78
+ controllerRef = props.controllerRef,
79
+ noHeader = props.noHeader,
80
+ bodyRowStyle = props.bodyRowStyle,
81
+ headRowStyle = props.headRowStyle,
82
+ errors = props.errors,
83
+ componentForEmpty = props.componentForEmpty,
84
+ bodyStyle = props.bodyStyle,
85
+ headStyle = props.headStyle,
86
+ hiddenRowHeight = props.hiddenRowHeight;
87
+
88
+ var _useState = (0, _react.useState)(),
89
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
90
+ newRow = _useState2[0],
91
+ setNewRow = _useState2[1];
92
+
93
+ var rows = (0, _react.useMemo)(function () {
94
+ if (pagination.disabled) {
95
+ return data;
96
+ }
97
+
98
+ return data;
99
+ }, [pagination.disabled, data, perPage, page, newRow]);
100
+
101
+ var _useRowsState = (0, _useRowsState2.useRowsState)(rows, newRow),
102
+ getRowState = _useRowsState.getRowState,
103
+ setEditableRowState = _useRowsState.setEditableRowState,
104
+ setRowState = _useRowsState.setRowState,
105
+ pushRowView = _useRowsState.pushRowView,
106
+ popRowView = _useRowsState.popRowView;
107
+
108
+ var controller = (0, _react.useRef)();
109
+ (0, _react.useEffect)(function () {
110
+ var nextController = {
111
+ editRow: function editRow(id) {
112
+ setRowState(id, {
113
+ mode: _types.RowMode.Edit
114
+ });
115
+ },
116
+ viewRow: function viewRow(id) {
117
+ setRowState(id, {
118
+ mode: _types.RowMode.View
119
+ });
120
+ setNewRow(undefined);
121
+ },
122
+ addRow: function addRow(partial) {
123
+ handleChangePerPage(0);
124
+ setNewRow(partial);
125
+ },
126
+ getEditedRowData: function getEditedRowData(id) {
127
+ var _getRowState;
128
+
129
+ return _objectSpread({
130
+ id: id
131
+ }, (_getRowState = getRowState(id)) === null || _getRowState === void 0 ? void 0 : _getRowState.editableState);
132
+ },
133
+ getRowData: function getRowData(id) {
134
+ var raw = getRowState(id);
135
+ return {
136
+ edited: _objectSpread({
137
+ id: id
138
+ }, raw === null || raw === void 0 ? void 0 : raw.editableState),
139
+ current: raw === null || raw === void 0 ? void 0 : raw.currentState
140
+ };
141
+ },
142
+ pushRowView: pushRowView,
143
+ popRowView: popRowView
144
+ };
145
+ controller.current = nextController;
146
+
147
+ if (controllerRef) {
148
+ controllerRef.current = nextController;
149
+ }
150
+ }, [setRowState, pushRowView, popRowView, getRowState, controllerRef]);
151
+ var rowsList = (0, _react.useMemo)(function () {
152
+ return rows.map(function (row) {
153
+ var rowState = getRowState(row.id);
154
+ var lastView = (rowState === null || rowState === void 0 ? void 0 : rowState.stackView) && (0, _last["default"])(rowState.stackView);
155
+ var view = lastView && (rowViews === null || rowViews === void 0 ? void 0 : rowViews[lastView]);
156
+ var mode = (rowState === null || rowState === void 0 ? void 0 : rowState.mode) || _types.RowMode.View;
157
+ return /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
158
+ key: row.id,
159
+ "data-id": row.id,
160
+ style: bodyRowStyle,
161
+ onClick: function onClick(event) {
162
+ return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(event, row);
163
+ }
164
+ }, view ? view({
165
+ data: row
166
+ }) : /*#__PURE__*/_react["default"].createElement(_Rows.StatefulRow, {
167
+ columns: columns,
168
+ data: row,
169
+ errors: errors,
170
+ mode: mode,
171
+ onUpdate: setEditableRowState(row.id)
172
+ }));
173
+ });
174
+ }, [rows, getRowState, onRowClick, setEditableRowState, errors, rowViews, bodyRowStyle, columns]);
175
+ var columnsList = (0, _react.useMemo)(function () {
176
+ return columns.map(function (column) {
177
+ return /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
178
+ key: column.title,
179
+ variant: "head",
180
+ style: column.headerStyle,
181
+ align: column.align
182
+ }, column.title);
183
+ });
184
+ }, [columns]);
185
+ var currentRowsNumber = rows.length + (newRow ? 1 : 0);
186
+ var hiddenRowsNumber = pagination.disabled ? 0 : perPage - currentRowsNumber;
187
+
188
+ var hiddenRowFiller = hiddenRowsNumber !== 0 && /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
189
+ style: bodyRowStyle
190
+ }, /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
191
+ colSpan: columns.length,
192
+ padding: "none",
193
+ style: {
194
+ height: hiddenRowHeight && "".concat(hiddenRowHeight * hiddenRowsNumber, "px")
195
+ }
196
+ }));
197
+
198
+ var rowsElements = /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, (newRow === null || newRow === void 0 ? void 0 : newRow.id) && /*#__PURE__*/_react["default"].createElement(_Rows.NewRow, {
199
+ data: newRow,
200
+ errors: errors,
201
+ columns: columns,
202
+ onUpdate: setEditableRowState(newRow.id)
203
+ }), rowsList);
204
+
205
+ var paginationActionsComponent = (0, _react.useMemo)(function () {
206
+ return (0, _DataTablePaginationActions.makeDataTablePaginationActions)({
207
+ showFirstButton: pagination.showFirstButton,
208
+ showLastButton: pagination.showLastButton,
209
+ clickable: pagination.clickable
210
+ });
211
+ }, [pagination.showFirstButton, pagination.showLastButton, pagination.clickable]);
212
+ return /*#__PURE__*/_react["default"].createElement(_TableContainer["default"], {
213
+ component: _Paper["default"]
214
+ }, /*#__PURE__*/_react["default"].createElement(_Table["default"], null, !noHeader && /*#__PURE__*/_react["default"].createElement(_TableHead["default"], {
215
+ style: headStyle
216
+ }, /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
217
+ style: headRowStyle
218
+ }, columnsList)), /*#__PURE__*/_react["default"].createElement(_TableBody["default"], {
219
+ style: bodyStyle
220
+ }, currentRowsNumber === 0 || pagination.clickable ? componentForEmpty : rowsElements, hiddenRowFiller), !pagination.disabled && /*#__PURE__*/_react["default"].createElement(_TableFooter["default"], null, /*#__PURE__*/_react["default"].createElement(_TableRow["default"], null, /*#__PURE__*/_react["default"].createElement(_TablePagination["default"], {
221
+ count: totalElements,
222
+ page: page,
223
+ rowsPerPageOptions: pagination.rowsPerPageOptions,
224
+ rowsPerPage: perPage,
225
+ labelRowsPerPage: pagination.labelRowsPerPage,
226
+ labelDisplayedRows: pagination.labelDisplayedRows,
227
+ onChangePage: function onChangePage(_, page) {
228
+ handleChangePage(page);
229
+ },
230
+ onChangeRowsPerPage: function onChangeRowsPerPage(event) {
231
+ handleChangePerPage(parseInt(event.target.value, 10));
232
+ },
233
+ ActionsComponent: paginationActionsComponent
234
+ })))));
235
+ };
236
+
237
+ exports.DataTableQueryPaginated = DataTableQueryPaginated;
238
+ var _default = DataTableQueryPaginated;
239
+ exports["default"] = _default;
@@ -53,6 +53,7 @@ export declare type PaginationOptions = {
53
53
  showFirstButton?: boolean;
54
54
  showLastButton?: boolean;
55
55
  disabled: boolean;
56
+ clickable: boolean;
56
57
  };
57
58
  export declare type RowAction<D> = {
58
59
  type: 'add' | 'delete' | 'update';
@@ -0,0 +1,18 @@
1
+ export interface IDataProps {
2
+ id: string;
3
+ product: string;
4
+ price: number;
5
+ quantity: number;
6
+ date: Date;
7
+ }
8
+ export declare const generateRandomDate: (size: number) => IDataProps[];
9
+ export declare const usePaginated: () => {
10
+ data: IDataProps[];
11
+ setData: (data: any) => void;
12
+ totalElements: number;
13
+ actualPage: number;
14
+ size: number;
15
+ handleChangePage: (newPage: number) => void;
16
+ handleChangePerPage: (value: number) => void;
17
+ loading: boolean;
18
+ };
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.usePaginated = exports.generateRandomDate = void 0;
9
+
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _faker = _interopRequireDefault(require("faker"));
15
+
16
+ var _splitEvery = _interopRequireDefault(require("ramda/es/splitEvery"));
17
+
18
+ var _react = require("react");
19
+
20
+ var _uuid = require("uuid");
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
+
26
+ var generateRandomDate = function generateRandomDate(size) {
27
+ var content = [];
28
+
29
+ for (var i = 0; i < size; i++) {
30
+ content.push({
31
+ id: (0, _uuid.v4)(),
32
+ product: _faker["default"].vehicle.model(),
33
+ price: _faker["default"].datatype["float"]({
34
+ min: 0,
35
+ max: 100000
36
+ }),
37
+ quantity: _faker["default"].datatype.number({
38
+ min: 0,
39
+ max: 30
40
+ }),
41
+ date: _faker["default"].date.recent(2)
42
+ });
43
+ }
44
+
45
+ return content;
46
+ };
47
+
48
+ exports.generateRandomDate = generateRandomDate;
49
+ var MOCK_DELAY_VALUE = 1000;
50
+ var DEFAULT_PAGE_SIZE = 5;
51
+ var DEFAULT_MOCK_LENGTH = 35;
52
+ var mockData = generateRandomDate(DEFAULT_MOCK_LENGTH);
53
+ var INITIAL_STATE = {
54
+ items: [],
55
+ size: DEFAULT_PAGE_SIZE,
56
+ actualPage: 0,
57
+ totalItens: 0
58
+ };
59
+
60
+ var usePaginated = function usePaginated() {
61
+ var _useState = (0, _react.useState)(INITIAL_STATE),
62
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
63
+ state = _useState2[0],
64
+ setState = _useState2[1];
65
+
66
+ var _useState3 = (0, _react.useState)(true),
67
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
68
+ loading = _useState4[0],
69
+ setLoading = _useState4[1];
70
+
71
+ var splitData = (0, _react.useMemo)(function () {
72
+ return (0, _splitEvery["default"])(state.size, mockData);
73
+ }, [state.size]);
74
+ (0, _react.useEffect)(function () {
75
+ setState(function (prev) {
76
+ return _objectSpread(_objectSpread({}, prev), {}, {
77
+ totalItens: mockData.length
78
+ });
79
+ });
80
+ setTimeout(function () {
81
+ setLoading(false);
82
+ }, MOCK_DELAY_VALUE);
83
+ }, []);
84
+ (0, _react.useEffect)(function () {
85
+ if (splitData[state.actualPage]) {
86
+ setState(function (prev) {
87
+ return _objectSpread(_objectSpread({}, prev), {}, {
88
+ items: splitData[state.actualPage]
89
+ });
90
+ });
91
+ } else {
92
+ setState(function (prev) {
93
+ return _objectSpread(_objectSpread({}, prev), {}, {
94
+ items: splitData[0],
95
+ actualPage: 0
96
+ });
97
+ });
98
+ }
99
+ }, [state.size]);
100
+ (0, _react.useEffect)(function () {
101
+ setState(function (prev) {
102
+ return _objectSpread(_objectSpread({}, prev), {}, {
103
+ items: splitData[state.actualPage]
104
+ });
105
+ });
106
+ }, [state.actualPage]);
107
+
108
+ var handleChangePage = function handleChangePage(newPage) {
109
+ setLoading(true);
110
+ setState(function (prev) {
111
+ return _objectSpread(_objectSpread({}, prev), {}, {
112
+ actualPage: newPage
113
+ });
114
+ });
115
+ setTimeout(function () {
116
+ setLoading(false);
117
+ }, MOCK_DELAY_VALUE);
118
+ };
119
+
120
+ var handleChangePerPage = function handleChangePerPage(value) {
121
+ setLoading(true);
122
+ setState(function (prev) {
123
+ return _objectSpread(_objectSpread({}, prev), {}, {
124
+ size: value
125
+ });
126
+ });
127
+ setTimeout(function () {
128
+ setLoading(false);
129
+ }, MOCK_DELAY_VALUE);
130
+ }; // eslint-disable-next-line @typescript-eslint/no-explicit-any
131
+
132
+
133
+ var setData = function setData(data) {
134
+ setState(function (prev) {
135
+ return _objectSpread(_objectSpread({}, prev), {}, {
136
+ items: data
137
+ });
138
+ });
139
+ };
140
+
141
+ return {
142
+ data: state.items,
143
+ setData: setData,
144
+ totalElements: state.totalItens,
145
+ actualPage: state.actualPage,
146
+ size: state.size,
147
+ handleChangePage: handleChangePage,
148
+ handleChangePerPage: handleChangePerPage,
149
+ loading: loading
150
+ };
151
+ };
152
+
153
+ exports.usePaginated = usePaginated;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flipper-ui",
3
- "version": "0.25.12",
3
+ "version": "0.25.13",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "homepage": "https://flipper-ui.ngi.com.br/",
@@ -31,10 +31,12 @@
31
31
  "@material-ui/lab": "4.0.0-alpha.54",
32
32
  "@material-ui/pickers": "3.2.6",
33
33
  "date-fns": "2.4.1",
34
+ "faker": "5.5.3",
34
35
  "material-table": "1.69.3",
35
36
  "material-ui-chip-input": "2.0.0-beta.2",
36
37
  "ramda": "0.25.0",
37
- "react-number-format": "4.4.1"
38
+ "react-number-format": "4.4.1",
39
+ "uuid": "9.0.0"
38
40
  },
39
41
  "devDependencies": {
40
42
  "@babel/cli": "7.10.0",
@@ -48,11 +50,13 @@
48
50
  "@storybook/addon-links": "6.3.12",
49
51
  "@storybook/react": "6.3.12",
50
52
  "@testing-library/react": "9.3.2",
53
+ "@types/faker": "5.5.3",
51
54
  "@types/jest": "24.0.22",
52
55
  "@types/node": "10.9.4",
53
56
  "@types/ramda": "0.25.36",
54
57
  "@types/react": "16.8.18",
55
58
  "@types/styled-components": "4.4.2",
59
+ "@types/uuid": "8.3.4",
56
60
  "@typescript-eslint/eslint-plugin": "1.6.0",
57
61
  "@typescript-eslint/parser": "1.6.0",
58
62
  "babel-loader": "8.2.3",
@@ -0,0 +1,583 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.Crud = exports.NoHeader = exports.Empty = exports.Default = exports["default"] = void 0;
11
+
12
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _TableCell = _interopRequireDefault(require("@material-ui/core/TableCell"));
19
+
20
+ var _TableRow = _interopRequireDefault(require("@material-ui/core/TableRow"));
21
+
22
+ var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
23
+
24
+ var _lab = require("@material-ui/lab");
25
+
26
+ var _format = _interopRequireDefault(require("date-fns/format"));
27
+
28
+ var _react = _interopRequireWildcard(require("react"));
29
+
30
+ var _Button = _interopRequireDefault(require("../core/Button"));
31
+
32
+ var _DataTableAction = require("../core/DataTable/DataTableAction");
33
+
34
+ var _DataTableQueryPaginated = _interopRequireDefault(require("../core/DataTable/DataTableQueryPaginated"));
35
+
36
+ var _types = require("../core/DataTable/types");
37
+
38
+ var _usePaginated5 = require("../core/DataTable/usePaginated");
39
+
40
+ var _Cancel = _interopRequireDefault(require("@material-ui/icons/Cancel"));
41
+
42
+ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
43
+
44
+ var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
45
+
46
+ var _Edit = _interopRequireDefault(require("@material-ui/icons/Edit"));
47
+
48
+ var _Save = _interopRequireDefault(require("@material-ui/icons/Save"));
49
+
50
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
51
+
52
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
53
+
54
+ var _default = {
55
+ title: 'DataTableQueryPaginated',
56
+ component: _DataTableQueryPaginated["default"]
57
+ };
58
+ exports["default"] = _default;
59
+ var columnsData = [{
60
+ title: 'Product',
61
+ type: 'text',
62
+ field: 'product',
63
+ cellStyle: {
64
+ maxWidth: '72px',
65
+ whiteSpace: 'nowrap',
66
+ overflow: 'hidden',
67
+ textOverflow: 'ellipsis'
68
+ },
69
+ editable: true
70
+ }, {
71
+ title: 'Price (R$)',
72
+ field: 'price',
73
+ type: 'numeric-float',
74
+ editable: false,
75
+ getValue: function getValue(value) {
76
+ return value.toFixed(2).replace('.', ',');
77
+ }
78
+ }, {
79
+ title: 'Quantity',
80
+ field: 'quantity',
81
+ type: 'numeric-int',
82
+ editable: true,
83
+ cellStyle: {
84
+ width: '82px'
85
+ }
86
+ }, {
87
+ title: 'Date',
88
+ field: 'date',
89
+ type: 'datetime',
90
+ editable: true,
91
+ getValue: function getValue(value) {
92
+ return (0, _format["default"])(value, 'dd/MM/yyyy HH:mm');
93
+ },
94
+ cellStyle: {
95
+ width: '200px'
96
+ }
97
+ }];
98
+
99
+ var generateSkeleton = function generateSkeleton(size, columns) {
100
+ var result = [];
101
+
102
+ for (var i = 0; i < size; i++) {
103
+ var table = /*#__PURE__*/_react["default"].createElement(_TableRow["default"], {
104
+ key: "skeleton-".concat(i),
105
+ style: {
106
+ width: '10px'
107
+ }
108
+ }, columns.map(function (column) {
109
+ return /*#__PURE__*/_react["default"].createElement(_TableCell["default"], {
110
+ align: column.align,
111
+ key: column.title,
112
+ style: column.cellStyle
113
+ }, /*#__PURE__*/_react["default"].createElement(_lab.Skeleton, null));
114
+ }));
115
+
116
+ result.push(table);
117
+ }
118
+
119
+ return result;
120
+ };
121
+
122
+ var Default = function Default() {
123
+ var _usePaginated = (0, _usePaginated5.usePaginated)(),
124
+ data = _usePaginated.data,
125
+ totalElements = _usePaginated.totalElements,
126
+ actualPage = _usePaginated.actualPage,
127
+ size = _usePaginated.size,
128
+ handleChangePerPage = _usePaginated.handleChangePerPage,
129
+ handleChangePage = _usePaginated.handleChangePage,
130
+ loading = _usePaginated.loading;
131
+
132
+ var LoadNode = (0, _react.useMemo)(function () {
133
+ return generateSkeleton(size, columnsData);
134
+ }, [size]);
135
+ return /*#__PURE__*/_react["default"].createElement(_DataTableQueryPaginated["default"], {
136
+ data: data,
137
+ totalElements: totalElements,
138
+ handleChangePage: handleChangePage,
139
+ handleChangePerPage: handleChangePerPage,
140
+ perPage: size,
141
+ componentForEmpty: LoadNode,
142
+ page: actualPage,
143
+ pagination: {
144
+ rowsPerPage: size,
145
+ labelRowsPerPage: 'Row per page ',
146
+ clickable: loading
147
+ },
148
+ columns: columnsData
149
+ });
150
+ };
151
+
152
+ exports.Default = Default;
153
+
154
+ var Empty = function Empty() {
155
+ var _usePaginated2 = (0, _usePaginated5.usePaginated)(),
156
+ totalElements = _usePaginated2.totalElements,
157
+ actualPage = _usePaginated2.actualPage,
158
+ size = _usePaginated2.size,
159
+ handleChangePerPage = _usePaginated2.handleChangePerPage,
160
+ handleChangePage = _usePaginated2.handleChangePage,
161
+ loading = _usePaginated2.loading;
162
+
163
+ var columns = [{
164
+ title: 'Product',
165
+ field: 'product',
166
+ type: 'text',
167
+ cellStyle: {
168
+ maxWidth: '72px',
169
+ whiteSpace: 'nowrap',
170
+ overflow: 'hidden',
171
+ textOverflow: 'ellipsis'
172
+ },
173
+ editable: true
174
+ }, {
175
+ title: 'Price (R$)',
176
+ field: 'price',
177
+ type: 'numeric-float',
178
+ editable: false,
179
+ getValue: function getValue(value) {
180
+ return value.toFixed(2).replace('.', ',');
181
+ }
182
+ }];
183
+
184
+ var componentForEmpty = /*#__PURE__*/_react["default"].createElement("tr", null, /*#__PURE__*/_react["default"].createElement("td", {
185
+ style: {
186
+ display: 'flex',
187
+ position: 'absolute',
188
+ height: '100%',
189
+ width: '100%',
190
+ justifyContent: 'center',
191
+ alignItems: 'center',
192
+ boxSizing: 'border-box'
193
+ }
194
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, "Empty DataTable"))));
195
+
196
+ var LoadNode = loading ? generateSkeleton : componentForEmpty;
197
+ return /*#__PURE__*/_react["default"].createElement(_DataTableQueryPaginated["default"], {
198
+ data: [],
199
+ bodyStyle: {
200
+ position: 'relative'
201
+ },
202
+ hiddenRowHeight: 53,
203
+ handleChangePage: handleChangePage,
204
+ handleChangePerPage: handleChangePerPage,
205
+ totalElements: totalElements,
206
+ page: actualPage,
207
+ perPage: size,
208
+ componentForEmpty: LoadNode,
209
+ pagination: {
210
+ rowsPerPage: 5,
211
+ labelRowsPerPage: 'Row per page'
212
+ },
213
+ columns: columns
214
+ });
215
+ };
216
+
217
+ exports.Empty = Empty;
218
+
219
+ var NoHeader = function NoHeader() {
220
+ var _usePaginated3 = (0, _usePaginated5.usePaginated)(),
221
+ totalElements = _usePaginated3.totalElements,
222
+ actualPage = _usePaginated3.actualPage,
223
+ size = _usePaginated3.size,
224
+ handleChangePerPage = _usePaginated3.handleChangePerPage,
225
+ handleChangePage = _usePaginated3.handleChangePage,
226
+ loading = _usePaginated3.loading,
227
+ data = _usePaginated3.data;
228
+
229
+ var LoadNode = (0, _react.useMemo)(function () {
230
+ return generateSkeleton(size, columnsData);
231
+ }, [size]);
232
+ var columns = [{
233
+ title: 'Product',
234
+ field: 'product',
235
+ type: 'text',
236
+ cellStyle: {
237
+ maxWidth: '72px',
238
+ whiteSpace: 'nowrap',
239
+ overflow: 'hidden',
240
+ textOverflow: 'ellipsis'
241
+ },
242
+ editable: true
243
+ }, {
244
+ title: 'Price (R$)',
245
+ field: 'price',
246
+ type: 'numeric-float',
247
+ editable: false,
248
+ getValue: function getValue(value) {
249
+ return value.toFixed(2).replace('.', ',');
250
+ }
251
+ }, {
252
+ title: 'Quantity',
253
+ field: 'quantity',
254
+ type: 'numeric-int',
255
+ editable: true,
256
+ cellStyle: {
257
+ width: '82px'
258
+ }
259
+ }, {
260
+ title: 'Date',
261
+ field: 'date',
262
+ type: 'datetime',
263
+ editable: true,
264
+ getValue: function getValue(value) {
265
+ return (0, _format["default"])(value, 'dd/MM/yyyy HH:mm');
266
+ },
267
+ cellStyle: {
268
+ width: '200px'
269
+ }
270
+ }];
271
+ return /*#__PURE__*/_react["default"].createElement(_DataTableQueryPaginated["default"], {
272
+ data: data,
273
+ handleChangePage: handleChangePage,
274
+ handleChangePerPage: handleChangePerPage,
275
+ totalElements: totalElements,
276
+ page: actualPage,
277
+ perPage: size,
278
+ noHeader: true,
279
+ hiddenRowHeight: 53,
280
+ componentForEmpty: LoadNode,
281
+ pagination: {
282
+ rowsPerPage: 5,
283
+ labelRowsPerPage: 'Row per page',
284
+ clickable: loading
285
+ },
286
+ columns: columns
287
+ });
288
+ };
289
+
290
+ exports.NoHeader = NoHeader;
291
+
292
+ var Crud = function Crud() {
293
+ var _usePaginated4 = (0, _usePaginated5.usePaginated)(),
294
+ totalElements = _usePaginated4.totalElements,
295
+ actualPage = _usePaginated4.actualPage,
296
+ size = _usePaginated4.size,
297
+ handleChangePerPage = _usePaginated4.handleChangePerPage,
298
+ handleChangePage = _usePaginated4.handleChangePage,
299
+ loading = _usePaginated4.loading,
300
+ data = _usePaginated4.data,
301
+ setData = _usePaginated4.setData;
302
+
303
+ var newData = [].concat(columnsData, [{
304
+ title: 'Actions',
305
+ type: 'text',
306
+ field: 'product',
307
+ cellStyle: {
308
+ maxWidth: '30px',
309
+ whiteSpace: 'nowrap',
310
+ overflow: 'hidden',
311
+ textOverflow: 'ellipsis'
312
+ },
313
+ editable: true
314
+ }]);
315
+ var LoadNode = (0, _react.useMemo)(function () {
316
+ return generateSkeleton(size, newData);
317
+ }, [size]);
318
+
319
+ var date = function date() {
320
+ return new Date();
321
+ };
322
+
323
+ var controllerRef = (0, _react.useRef)();
324
+
325
+ var _useState = (0, _react.useState)({}),
326
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
327
+ errors = _useState2[0],
328
+ setErrors = _useState2[1];
329
+
330
+ var randomId = function randomId() {
331
+ return Math.random().toString(36).substr(0, 12);
332
+ };
333
+
334
+ var handleAdd = function handleAdd() {
335
+ controllerRef.current.addRow({
336
+ id: randomId(),
337
+ date: date()
338
+ });
339
+ };
340
+
341
+ var handleEdit = function handleEdit(id) {
342
+ return function () {
343
+ controllerRef.current.editRow(id);
344
+ };
345
+ };
346
+
347
+ var handleDelete = function handleDelete(id) {
348
+ return function () {
349
+ controllerRef.current.pushRowView(id, 'confirmDelete');
350
+ };
351
+ };
352
+
353
+ var handleView = function handleView(id) {
354
+ return function () {
355
+ controllerRef.current.viewRow(id);
356
+ };
357
+ };
358
+
359
+ var isNullable = function isNullable(x) {
360
+ return x == null;
361
+ };
362
+
363
+ var isNotPositive = function isNotPositive(x) {
364
+ return x <= 0;
365
+ };
366
+
367
+ var isAfterNow = function isAfterNow(x) {
368
+ return +x > +new Date();
369
+ };
370
+
371
+ var isEmpty = function isEmpty(x) {
372
+ return x.trim().length === 0;
373
+ };
374
+
375
+ var handleErrors = function handleErrors(id) {
376
+ var nextItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
377
+ var isPartial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
378
+ var errorFields = [{
379
+ field: 'quantity',
380
+ isErrorIf: [isNaN, isNotPositive]
381
+ }, {
382
+ field: 'date',
383
+ isErrorIf: [isAfterNow]
384
+ }, {
385
+ field: 'product',
386
+ isErrorIf: [isEmpty]
387
+ }, {
388
+ field: 'price',
389
+ isErrorIf: [isNaN, isNotPositive]
390
+ }].filter(function (_ref) {
391
+ var field = _ref.field,
392
+ isErrorIf = _ref.isErrorIf;
393
+ var value = nextItem[field];
394
+
395
+ if (isNullable(value)) {
396
+ if (isPartial) {
397
+ return false;
398
+ }
399
+
400
+ return true;
401
+ }
402
+
403
+ return isErrorIf.some(function (cond) {
404
+ return cond(value);
405
+ });
406
+ }).map(function (_ref2) {
407
+ var field = _ref2.field;
408
+ return field;
409
+ });
410
+ setErrors(function (errors) {
411
+ return _objectSpread(_objectSpread({}, errors), {}, (0, _defineProperty2["default"])({}, id, new Set(errorFields)));
412
+ });
413
+ return errorFields.length > 0;
414
+ };
415
+
416
+ var handleSave = function handleSave(id) {
417
+ var isNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
418
+ return function () {
419
+ var nextItem = controllerRef.current.getEditedRowData(id);
420
+
421
+ if (!nextItem) {
422
+ return;
423
+ }
424
+
425
+ if (handleErrors(id, nextItem, !isNew)) {
426
+ return;
427
+ }
428
+
429
+ if (isNew) {
430
+ setData([nextItem].concat((0, _toConsumableArray2["default"])(data)));
431
+ } else {
432
+ setData(data.map(function (item) {
433
+ if (item.id === id) {
434
+ return _objectSpread(_objectSpread({}, item), nextItem);
435
+ }
436
+
437
+ return item;
438
+ }));
439
+ }
440
+
441
+ controllerRef.current.viewRow(id);
442
+ };
443
+ };
444
+
445
+ var columns = [{
446
+ title: 'Product',
447
+ field: 'product',
448
+ type: 'text',
449
+ cellStyle: {
450
+ width: '120px'
451
+ },
452
+ editable: true
453
+ }, {
454
+ title: 'Price (R$)',
455
+ field: 'price',
456
+ type: 'numeric-float',
457
+ editable: true,
458
+ getValue: function getValue(value) {
459
+ return value.toFixed(2).replace('.', ',');
460
+ }
461
+ }, {
462
+ title: 'Quantity',
463
+ field: 'quantity',
464
+ type: 'numeric-int',
465
+ editable: true,
466
+ cellStyle: {
467
+ width: '82px'
468
+ }
469
+ }, {
470
+ title: 'Date',
471
+ field: 'date',
472
+ type: 'datetime',
473
+ editable: true,
474
+ getValue: function getValue(value) {
475
+ return (0, _format["default"])(value, 'dd/MM/yyyy HH:mm');
476
+ },
477
+ cellStyle: {
478
+ width: '200px'
479
+ }
480
+ }, {
481
+ title: 'Actions',
482
+ type: 'actions',
483
+ align: 'center',
484
+ cellStyle: {
485
+ width: '60px'
486
+ },
487
+ renderCell: function renderCell(_ref3) {
488
+ var id = _ref3.data.id,
489
+ rowMode = _ref3.rowMode,
490
+ _ref3$isNew = _ref3.isNew,
491
+ isNew = _ref3$isNew === void 0 ? false : _ref3$isNew;
492
+
493
+ if (rowMode === _types.RowMode.View) {
494
+ return /*#__PURE__*/_react["default"].createElement("div", {
495
+ style: {
496
+ display: 'flex'
497
+ }
498
+ }, /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
499
+ label: "Edit",
500
+ onClick: handleEdit(id)
501
+ }, /*#__PURE__*/_react["default"].createElement(_Edit["default"], null)), /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
502
+ label: "Delete",
503
+ onClick: handleDelete(id)
504
+ }, /*#__PURE__*/_react["default"].createElement(_Delete["default"], null)));
505
+ }
506
+
507
+ return /*#__PURE__*/_react["default"].createElement("div", {
508
+ style: {
509
+ display: 'flex'
510
+ }
511
+ }, /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
512
+ label: "Save",
513
+ onClick: handleSave(id, isNew)
514
+ }, /*#__PURE__*/_react["default"].createElement(_Save["default"], null)), /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
515
+ label: "Cancel",
516
+ onClick: handleView(id)
517
+ }, /*#__PURE__*/_react["default"].createElement(_Cancel["default"], null)));
518
+ }
519
+ }];
520
+ var rowViews = {
521
+ confirmDelete: function confirmDelete(_ref4) {
522
+ var data = _ref4.data;
523
+ return /*#__PURE__*/_react["default"].createElement("td", {
524
+ colSpan: 5
525
+ }, /*#__PURE__*/_react["default"].createElement("div", {
526
+ style: {
527
+ display: 'flex',
528
+ padding: '16px',
529
+ justifyContent: 'space-between'
530
+ }
531
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], null, "Confirm Delete \"", data.product, "\"?"), /*#__PURE__*/_react["default"].createElement("div", {
532
+ style: {
533
+ display: 'flex'
534
+ }
535
+ }, /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
536
+ label: "CheckIcon",
537
+ onClick: function onClick() {
538
+ controllerRef.current.popRowView(data.id);
539
+ setData(function (dataList) {
540
+ return dataList.filter(function (item) {
541
+ return item.id !== data.id;
542
+ });
543
+ });
544
+ }
545
+ }, /*#__PURE__*/_react["default"].createElement(_Check["default"], null)), /*#__PURE__*/_react["default"].createElement(_DataTableAction.DataTableAction, {
546
+ label: "CancelIcon",
547
+ onClick: function onClick() {
548
+ controllerRef.current.popRowView(data.id);
549
+ }
550
+ }, /*#__PURE__*/_react["default"].createElement(_Cancel["default"], null)))));
551
+ }
552
+ };
553
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
554
+ onClick: handleAdd
555
+ }, "Add Row"), /*#__PURE__*/_react["default"].createElement(_DataTableQueryPaginated["default"], {
556
+ data: data,
557
+ controllerRef: controllerRef,
558
+ errors: errors,
559
+ handleChangePage: handleChangePage,
560
+ handleChangePerPage: handleChangePerPage,
561
+ componentForEmpty: LoadNode,
562
+ totalElements: totalElements,
563
+ page: actualPage,
564
+ perPage: size,
565
+ pagination: {
566
+ rowsPerPage: 5,
567
+ clickable: loading,
568
+ showFirstButton: true,
569
+ showLastButton: true,
570
+ labelRowsPerPage: 'Rows per page:',
571
+ labelDisplayedRows: function labelDisplayedRows(_ref5) {
572
+ var from = _ref5.from,
573
+ to = _ref5.to,
574
+ count = _ref5.count;
575
+ return "".concat(from, "-").concat(to, " of ").concat(count !== -1 ? count : "more than ".concat(to));
576
+ }
577
+ },
578
+ rowViews: rowViews,
579
+ columns: columns
580
+ }));
581
+ };
582
+
583
+ exports.Crud = Crud;