@reltio/components 1.4.1110 → 1.4.1113

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 (63) hide show
  1. package/cjs/components/VerticalHeadingsTable/TableCell/TableCell.d.ts +10 -0
  2. package/cjs/components/VerticalHeadingsTable/TableCell/TableCell.js +15 -0
  3. package/cjs/components/VerticalHeadingsTable/TableCellWithDnd/TableCellWithDnd.d.ts +13 -0
  4. package/cjs/components/VerticalHeadingsTable/TableCellWithDnd/TableCellWithDnd.js +89 -0
  5. package/cjs/components/VerticalHeadingsTable/TableCellWithDnd/styles.d.ts +1 -0
  6. package/cjs/components/VerticalHeadingsTable/TableCellWithDnd/styles.js +29 -0
  7. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragLayer.d.ts +6 -0
  8. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragLayer.js +56 -0
  9. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragPreview.d.ts +12 -0
  10. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragPreview.js +16 -0
  11. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/styles.d.ts +1 -0
  12. package/cjs/components/VerticalHeadingsTable/TableColumnDragLayer/styles.js +15 -0
  13. package/cjs/components/VerticalHeadingsTable/TableHeadCell/TableHeadCell.d.ts +16 -0
  14. package/cjs/components/VerticalHeadingsTable/TableHeadCell/TableHeadCell.js +31 -0
  15. package/cjs/components/VerticalHeadingsTable/TableHeadCell/styles.d.ts +1 -0
  16. package/cjs/components/VerticalHeadingsTable/TableHeadCell/styles.js +28 -0
  17. package/cjs/components/VerticalHeadingsTable/TableRow/TableRow.d.ts +12 -0
  18. package/cjs/components/VerticalHeadingsTable/TableRow/TableRow.js +22 -0
  19. package/cjs/components/VerticalHeadingsTable/TableRowWithDnd/TableRowWithDnd.d.ts +13 -0
  20. package/cjs/components/VerticalHeadingsTable/TableRowWithDnd/TableRowWithDnd.js +78 -0
  21. package/cjs/components/VerticalHeadingsTable/VerticalHeadingsTable.d.ts +13 -25
  22. package/cjs/components/VerticalHeadingsTable/VerticalHeadingsTable.js +14 -49
  23. package/cjs/components/VerticalHeadingsTable/helpers.d.ts +6 -0
  24. package/cjs/components/VerticalHeadingsTable/helpers.js +13 -0
  25. package/cjs/components/VerticalHeadingsTable/types.d.ts +19 -0
  26. package/cjs/components/VerticalHeadingsTable/types.js +8 -0
  27. package/cjs/components/crosswalks/CrosswalkDragLayer/styles.d.ts +1 -1
  28. package/cjs/hooks/index.d.ts +1 -0
  29. package/cjs/hooks/index.js +3 -1
  30. package/cjs/hooks/useSavedStateForEntityType.d.ts +14 -0
  31. package/cjs/hooks/useSavedStateForEntityType.js +47 -0
  32. package/esm/components/VerticalHeadingsTable/TableCell/TableCell.d.ts +10 -0
  33. package/esm/components/VerticalHeadingsTable/TableCell/TableCell.js +8 -0
  34. package/esm/components/VerticalHeadingsTable/TableCellWithDnd/TableCellWithDnd.d.ts +13 -0
  35. package/esm/components/VerticalHeadingsTable/TableCellWithDnd/TableCellWithDnd.js +63 -0
  36. package/esm/components/VerticalHeadingsTable/TableCellWithDnd/styles.d.ts +1 -0
  37. package/esm/components/VerticalHeadingsTable/TableCellWithDnd/styles.js +26 -0
  38. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragLayer.d.ts +6 -0
  39. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragLayer.js +33 -0
  40. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragPreview.d.ts +12 -0
  41. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/TableColumnDragPreview.js +9 -0
  42. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/styles.d.ts +1 -0
  43. package/esm/components/VerticalHeadingsTable/TableColumnDragLayer/styles.js +12 -0
  44. package/esm/components/VerticalHeadingsTable/TableHeadCell/TableHeadCell.d.ts +16 -0
  45. package/esm/components/VerticalHeadingsTable/TableHeadCell/TableHeadCell.js +24 -0
  46. package/esm/components/VerticalHeadingsTable/TableHeadCell/styles.d.ts +1 -0
  47. package/esm/components/VerticalHeadingsTable/TableHeadCell/styles.js +25 -0
  48. package/esm/components/VerticalHeadingsTable/TableRow/TableRow.d.ts +12 -0
  49. package/esm/components/VerticalHeadingsTable/TableRow/TableRow.js +15 -0
  50. package/esm/components/VerticalHeadingsTable/TableRowWithDnd/TableRowWithDnd.d.ts +13 -0
  51. package/esm/components/VerticalHeadingsTable/TableRowWithDnd/TableRowWithDnd.js +55 -0
  52. package/esm/components/VerticalHeadingsTable/VerticalHeadingsTable.d.ts +13 -25
  53. package/esm/components/VerticalHeadingsTable/VerticalHeadingsTable.js +15 -47
  54. package/esm/components/VerticalHeadingsTable/helpers.d.ts +6 -0
  55. package/esm/components/VerticalHeadingsTable/helpers.js +8 -0
  56. package/esm/components/VerticalHeadingsTable/types.d.ts +19 -0
  57. package/esm/components/VerticalHeadingsTable/types.js +5 -0
  58. package/esm/components/crosswalks/CrosswalkDragLayer/styles.d.ts +1 -1
  59. package/esm/hooks/index.d.ts +1 -0
  60. package/esm/hooks/index.js +1 -0
  61. package/esm/hooks/useSavedStateForEntityType.d.ts +14 -0
  62. package/esm/hooks/useSavedStateForEntityType.js +43 -0
  63. package/package.json +3 -3
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import { ColumnData, RowData } from '../types';
3
+ declare type Props = {
4
+ columnValue: ColumnData;
5
+ rowData: RowData;
6
+ setHoveredColumn: (columnValue: ColumnData) => void;
7
+ resetHoveredColumn: () => void;
8
+ };
9
+ export declare const TableCell: ({ columnValue, rowData, setHoveredColumn, resetHoveredColumn }: Props) => JSX.Element;
10
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableCell = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var helpers_1 = require("../helpers");
9
+ var TableCell = function (_a) {
10
+ var columnValue = _a.columnValue, rowData = _a.rowData, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
11
+ var CellRenderer = rowData.cellRenderer || helpers_1.DefaultCellRenderer;
12
+ return (react_1.default.createElement("td", { onMouseOver: function () { return setHoveredColumn(columnValue); }, onMouseLeave: resetHoveredColumn },
13
+ react_1.default.createElement(CellRenderer, { value: columnValue[rowData.id] })));
14
+ };
15
+ exports.TableCell = TableCell;
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { RowData, ColumnData } from '../types';
3
+ declare type Props = {
4
+ columnValue: ColumnData;
5
+ rowData: RowData;
6
+ index: number;
7
+ onMoveColumn: (dragId: string, hoverId: string) => void;
8
+ shouldRenderDragIndicator: boolean;
9
+ setHoveredColumn: (columnValue: ColumnData) => void;
10
+ resetHoveredColumn: () => void;
11
+ };
12
+ export declare const TableCellWithDnd: ({ columnValue, rowData, index, onMoveColumn, shouldRenderDragIndicator, setHoveredColumn, resetHoveredColumn }: Props) => JSX.Element;
13
+ export {};
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.TableCellWithDnd = void 0;
26
+ var react_1 = __importStar(require("react"));
27
+ var DragIndicator_1 = __importDefault(require("@material-ui/icons/DragIndicator"));
28
+ var react_dnd_1 = require("react-dnd");
29
+ var react_dnd_html5_backend_1 = require("react-dnd-html5-backend");
30
+ var types_1 = require("../types");
31
+ var helpers_1 = require("../helpers");
32
+ var styles_1 = require("./styles");
33
+ var TableCellWithDnd = function (_a) {
34
+ var columnValue = _a.columnValue, rowData = _a.rowData, index = _a.index, onMoveColumn = _a.onMoveColumn, shouldRenderDragIndicator = _a.shouldRenderDragIndicator, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
35
+ var styles = styles_1.useStyles();
36
+ var dropRef = react_1.default.useRef(null);
37
+ var dragRef = react_1.default.useRef(null);
38
+ var getColumnWidth = function () { var _a; return (_a = dropRef === null || dropRef === void 0 ? void 0 : dropRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth; };
39
+ var CellRenderer = rowData.cellRenderer || helpers_1.DefaultCellRenderer;
40
+ var _b = react_dnd_1.useDrop({
41
+ accept: types_1.DndItemTypes.Column,
42
+ hover: function (item, monitor) {
43
+ var _a;
44
+ if (!dropRef.current) {
45
+ return;
46
+ }
47
+ var dragIndex = item.index;
48
+ var hoverIndex = index;
49
+ if (dragIndex === hoverIndex) {
50
+ return;
51
+ }
52
+ var hoverBoundingRect = (_a = dropRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
53
+ var hoverMiddleX = (hoverBoundingRect.right - hoverBoundingRect.left) / 2;
54
+ var clientOffset = monitor.getClientOffset();
55
+ var hoverClientX = clientOffset.x - hoverBoundingRect.left;
56
+ if (dragIndex < hoverIndex && hoverClientX < hoverMiddleX) {
57
+ return;
58
+ }
59
+ if (dragIndex > hoverIndex && hoverClientX > hoverMiddleX) {
60
+ return;
61
+ }
62
+ onMoveColumn(item.columnValue.id, columnValue.id);
63
+ item.index = hoverIndex;
64
+ },
65
+ collect: function (monitor) { return ({
66
+ targetId: monitor.getHandlerId()
67
+ }); }
68
+ }), targetId = _b[0].targetId, drop = _b[1];
69
+ var _c = react_dnd_1.useDrag({
70
+ item: { type: types_1.DndItemTypes.Column, index: index, getColumnWidth: getColumnWidth, columnValue: columnValue, rowData: rowData },
71
+ isDragging: function (monitor) {
72
+ return monitor.getItem().index === index;
73
+ },
74
+ collect: function (monitor) { return ({
75
+ opacity: monitor.isDragging() ? 0 : 1,
76
+ sourceId: monitor.getHandlerId()
77
+ }); }
78
+ }), _d = _c[0], opacity = _d.opacity, sourceId = _d.sourceId, drag = _c[1], preview = _c[2];
79
+ react_1.useEffect(function () {
80
+ preview(react_dnd_html5_backend_1.getEmptyImage(), { captureDraggingState: true });
81
+ drop(dropRef);
82
+ drag(dragRef);
83
+ }, []);
84
+ return (react_1.default.createElement("td", { style: { opacity: opacity }, ref: dropRef, className: styles.tableData, "data-source-id": sourceId, "data-target-id": targetId, onMouseOver: function () { return setHoveredColumn(columnValue); }, onMouseLeave: resetHoveredColumn },
85
+ shouldRenderDragIndicator && (react_1.default.createElement("div", { ref: dragRef, className: styles.dragIndicator },
86
+ react_1.default.createElement(DragIndicator_1.default, { className: styles.dragIndicatorIcon }))),
87
+ react_1.default.createElement(CellRenderer, { value: columnValue[rowData.id] })));
88
+ };
89
+ exports.TableCellWithDnd = TableCellWithDnd;
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"tableData" | "dragIndicator" | "dragIndicatorIcon">;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useStyles = void 0;
4
+ var styles_1 = require("@material-ui/core/styles");
5
+ exports.useStyles = styles_1.makeStyles(function (theme) { return ({
6
+ tableData: {
7
+ position: 'relative',
8
+ '&:hover': {
9
+ '& $dragIndicator': {
10
+ opacity: 1
11
+ }
12
+ }
13
+ },
14
+ dragIndicator: {
15
+ opacity: 0,
16
+ position: 'absolute',
17
+ top: 0,
18
+ left: '50%',
19
+ cursor: 'move',
20
+ transition: 'opacity 0.3s',
21
+ transform: 'translateX(-50%) rotate(90deg)',
22
+ zIndex: 5
23
+ },
24
+ dragIndicatorIcon: {
25
+ width: '14.4px',
26
+ height: '18px',
27
+ color: theme.palette.text.secondary
28
+ }
29
+ }); });
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare type Props = {
3
+ columnHeight: number;
4
+ };
5
+ export declare const TableColumnDragLayer: ({ columnHeight }: Props) => JSX.Element;
6
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.TableColumnDragLayer = void 0;
23
+ var react_1 = __importStar(require("react"));
24
+ var react_dnd_1 = require("react-dnd");
25
+ var TableColumnDragPreview_1 = require("./TableColumnDragPreview");
26
+ var types_1 = require("../types");
27
+ var styles_1 = require("./styles");
28
+ var getItemStyles = function (dragLayerEl, clientOffset, columnWidth) {
29
+ var dragLayerRect = (dragLayerEl === null || dragLayerEl === void 0 ? void 0 : dragLayerEl.getBoundingClientRect()) || { x: 0, y: 0 };
30
+ var dragItemX = (clientOffset === null || clientOffset === void 0 ? void 0 : clientOffset.x) - (dragLayerRect === null || dragLayerRect === void 0 ? void 0 : dragLayerRect.x) - columnWidth / 2;
31
+ var dragItemY = (clientOffset === null || clientOffset === void 0 ? void 0 : clientOffset.y) - (dragLayerRect === null || dragLayerRect === void 0 ? void 0 : dragLayerRect.y);
32
+ var dragItemTransform = "translate(" + dragItemX + "px, " + dragItemY + "px";
33
+ return {
34
+ display: 'flex',
35
+ transform: dragItemTransform,
36
+ WebkitTransform: dragItemTransform
37
+ };
38
+ };
39
+ var TableColumnDragLayer = function (_a) {
40
+ var _b;
41
+ var columnHeight = _a.columnHeight;
42
+ var styles = styles_1.useStyles();
43
+ var dragLayerRef = react_1.useRef();
44
+ var _c = react_dnd_1.useDragLayer(function (monitor) { return ({
45
+ isDragging: monitor.isDragging(),
46
+ clientOffset: monitor.getClientOffset(),
47
+ item: monitor.getItem()
48
+ }); }), isDragging = _c.isDragging, clientOffset = _c.clientOffset, item = _c.item;
49
+ if (!isDragging || !item) {
50
+ return null;
51
+ }
52
+ var columnWidth = (_b = item.getColumnWidth) === null || _b === void 0 ? void 0 : _b.call(item);
53
+ return (react_1.default.createElement("div", { className: styles.dragLayer, ref: dragLayerRef },
54
+ react_1.default.createElement("div", { style: getItemStyles(dragLayerRef.current, clientOffset, columnWidth) }, item.type === types_1.DndItemTypes.Column && (react_1.default.createElement(TableColumnDragPreview_1.TableColumnDragPreview, { columnWidth: columnWidth, columnHeight: columnHeight, item: item })))));
55
+ };
56
+ exports.TableColumnDragLayer = TableColumnDragLayer;
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { ColumnData, RowData } from '../types';
3
+ declare type Props = {
4
+ columnWidth: number;
5
+ columnHeight: number;
6
+ item: {
7
+ rowData: RowData;
8
+ columnValue: ColumnData;
9
+ };
10
+ };
11
+ export declare const TableColumnDragPreview: ({ columnWidth, columnHeight, item }: Props) => JSX.Element;
12
+ export {};
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableColumnDragPreview = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var helpers_1 = require("../helpers");
9
+ var TableColumnDragPreview = function (_a) {
10
+ var columnWidth = _a.columnWidth, columnHeight = _a.columnHeight, item = _a.item;
11
+ var rowData = item.rowData, columnValue = item.columnValue;
12
+ var CellRenderer = rowData.cellRenderer || helpers_1.DefaultCellRenderer;
13
+ return (react_1.default.createElement("div", { style: { width: columnWidth, height: columnHeight, background: 'rgba(245,245,245, .5)' } },
14
+ react_1.default.createElement(CellRenderer, { value: columnValue[rowData.id] })));
15
+ };
16
+ exports.TableColumnDragPreview = TableColumnDragPreview;
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"dragLayer">;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useStyles = void 0;
4
+ var styles_1 = require("@material-ui/core/styles");
5
+ exports.useStyles = styles_1.makeStyles({
6
+ dragLayer: {
7
+ position: 'fixed',
8
+ top: 0,
9
+ left: 0,
10
+ width: '100%',
11
+ height: '100%',
12
+ zIndex: 1300,
13
+ pointerEvents: 'none'
14
+ }
15
+ });
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import { RowData } from '../types';
3
+ declare type BasicProps = {
4
+ rowData: RowData;
5
+ };
6
+ declare type PropsWithDnd = BasicProps & {
7
+ isDraggable: true;
8
+ dragRef: React.Ref<HTMLDivElement>;
9
+ };
10
+ declare type PropsWithoutDnd = BasicProps & {
11
+ isDraggable?: false;
12
+ dragRef?: React.Ref<HTMLDivElement>;
13
+ };
14
+ declare type Props = PropsWithDnd | PropsWithoutDnd;
15
+ export declare const TableHeadCell: ({ rowData, isDraggable, dragRef }: Props) => JSX.Element;
16
+ export {};
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.TableHeadCell = void 0;
18
+ var react_1 = __importDefault(require("react"));
19
+ var DragIndicator_1 = __importDefault(require("@material-ui/icons/DragIndicator"));
20
+ var helpers_1 = require("../helpers");
21
+ var styles_1 = require("./styles");
22
+ var TableHeadCell = function (_a) {
23
+ var rowData = _a.rowData, isDraggable = _a.isDraggable, dragRef = _a.dragRef;
24
+ var styles = styles_1.useStyles();
25
+ var HeadCellRenderer = rowData.headCellRenderer || helpers_1.DefaultHeadCellRenderer;
26
+ return (react_1.default.createElement("th", { className: styles.tableHead },
27
+ isDraggable && (react_1.default.createElement("div", { ref: dragRef, className: styles.dragIndicator },
28
+ react_1.default.createElement(DragIndicator_1.default, { className: styles.dragIndicatorIcon }))),
29
+ react_1.default.createElement(HeadCellRenderer, __assign({}, rowData))));
30
+ };
31
+ exports.TableHeadCell = TableHeadCell;
@@ -0,0 +1 @@
1
+ export declare const useStyles: (props?: any) => import("@material-ui/core/styles/withStyles").ClassNameMap<"dragIndicator" | "dragIndicatorIcon" | "tableHead">;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useStyles = void 0;
4
+ var styles_1 = require("@material-ui/core/styles");
5
+ exports.useStyles = styles_1.makeStyles(function (theme) { return ({
6
+ tableHead: {
7
+ position: 'relative',
8
+ '&:hover': {
9
+ '& $dragIndicator': {
10
+ opacity: 1
11
+ }
12
+ }
13
+ },
14
+ dragIndicator: {
15
+ opacity: 0,
16
+ position: 'absolute',
17
+ top: '50%',
18
+ left: 0,
19
+ transform: 'translateY(-50%)',
20
+ cursor: 'move',
21
+ transition: 'opacity 0.3s'
22
+ },
23
+ dragIndicatorIcon: {
24
+ width: '14.4px',
25
+ height: '18px',
26
+ color: theme.palette.text.secondary
27
+ }
28
+ }); });
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ import { RowData, ColumnData } from '../types';
3
+ declare type Props = {
4
+ rowData: RowData;
5
+ columnsData: ColumnData[];
6
+ index: number;
7
+ onMoveColumn?: (dragId: string, hoverId: string) => void;
8
+ setHoveredColumn: (columnValue: ColumnData) => void;
9
+ resetHoveredColumn: () => void;
10
+ };
11
+ export declare const TableRow: ({ rowData, columnsData, index, onMoveColumn, setHoveredColumn, resetHoveredColumn }: Props) => JSX.Element;
12
+ export {};
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TableRow = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ var TableCell_1 = require("../TableCell/TableCell");
9
+ var TableCellWithDnd_1 = require("../TableCellWithDnd/TableCellWithDnd");
10
+ var TableHeadCell_1 = require("../TableHeadCell/TableHeadCell");
11
+ var TableRow = function (_a) {
12
+ var rowData = _a.rowData, columnsData = _a.columnsData, index = _a.index, onMoveColumn = _a.onMoveColumn, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
13
+ var isFirstRow = index === 0;
14
+ return (react_1.default.createElement("tr", null,
15
+ react_1.default.createElement(TableHeadCell_1.TableHeadCell, { rowData: rowData, isDraggable: false }),
16
+ columnsData.map(function (columnValue, index) {
17
+ var isDraggableColumn = columnValue.isDraggable;
18
+ var shouldRenderDragIndicator = isFirstRow && isDraggableColumn;
19
+ return onMoveColumn ? (react_1.default.createElement(TableCellWithDnd_1.TableCellWithDnd, { key: columnValue.id, columnValue: columnValue, rowData: rowData, index: index, onMoveColumn: onMoveColumn, shouldRenderDragIndicator: shouldRenderDragIndicator, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn })) : (react_1.default.createElement(TableCell_1.TableCell, { key: columnValue.id, rowData: rowData, columnValue: columnValue, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn }));
20
+ })));
21
+ };
22
+ exports.TableRow = TableRow;
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { RowData, ColumnData } from '../types';
3
+ declare type Props = {
4
+ rowData: RowData;
5
+ index: number;
6
+ columnsData: ColumnData[];
7
+ onMoveRow: (dragId: string, hoverId: string) => void;
8
+ onMoveColumn?: (dragId: string, hoverId: string) => void;
9
+ setHoveredColumn: (columnValue: ColumnData) => void;
10
+ resetHoveredColumn: () => void;
11
+ };
12
+ export declare const TableRowWithDnd: ({ rowData, index, columnsData, onMoveRow, onMoveColumn, setHoveredColumn, resetHoveredColumn }: Props) => JSX.Element;
13
+ export {};
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.TableRowWithDnd = void 0;
23
+ var react_1 = __importStar(require("react"));
24
+ var react_dnd_1 = require("react-dnd");
25
+ var TableHeadCell_1 = require("../TableHeadCell/TableHeadCell");
26
+ var TableCell_1 = require("../TableCell/TableCell");
27
+ var TableCellWithDnd_1 = require("../TableCellWithDnd/TableCellWithDnd");
28
+ var types_1 = require("../types");
29
+ var TableRowWithDnd = function (_a) {
30
+ var rowData = _a.rowData, index = _a.index, columnsData = _a.columnsData, onMoveRow = _a.onMoveRow, onMoveColumn = _a.onMoveColumn, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
31
+ var dropRef = react_1.default.useRef(null);
32
+ var dragRef = react_1.default.useRef(null);
33
+ var _b = react_dnd_1.useDrop({
34
+ accept: types_1.DndItemTypes.Row,
35
+ hover: function (item, monitor) {
36
+ if (!dropRef.current) {
37
+ return;
38
+ }
39
+ var dragIndex = item.index;
40
+ var hoverIndex = index;
41
+ if (dragIndex === hoverIndex) {
42
+ return;
43
+ }
44
+ var hoverBoundingRect = dropRef.current.getBoundingClientRect();
45
+ var hoverMiddleY = (hoverBoundingRect.bottom - hoverBoundingRect.top) / 2;
46
+ var clientOffset = monitor.getClientOffset();
47
+ var hoverClientY = clientOffset.y - hoverBoundingRect.top;
48
+ if (dragIndex < hoverIndex && hoverClientY < hoverMiddleY) {
49
+ return;
50
+ }
51
+ if (dragIndex > hoverIndex && hoverClientY > hoverMiddleY) {
52
+ return;
53
+ }
54
+ onMoveRow(item.id, rowData.id);
55
+ item.index = hoverIndex;
56
+ },
57
+ collect: function (monitor) { return ({
58
+ targetId: monitor.getHandlerId()
59
+ }); }
60
+ }), targetId = _b[0].targetId, drop = _b[1];
61
+ var _c = react_dnd_1.useDrag({
62
+ item: { type: types_1.DndItemTypes.Row, index: index, id: rowData.id },
63
+ collect: function (monitor) { return ({
64
+ opacity: monitor.isDragging() ? 0 : 1,
65
+ sourceId: monitor.getHandlerId()
66
+ }); }
67
+ }), _d = _c[0], opacity = _d.opacity, sourceId = _d.sourceId, drag = _c[1], preview = _c[2];
68
+ react_1.useEffect(function () {
69
+ preview(drop(dropRef));
70
+ drag(dragRef);
71
+ }, []);
72
+ return (react_1.default.createElement("tr", { style: { opacity: opacity }, ref: dropRef, "data-target-id": targetId, "data-source-id": sourceId },
73
+ react_1.default.createElement(TableHeadCell_1.TableHeadCell, { rowData: rowData, isDraggable: true, dragRef: dragRef }),
74
+ columnsData.map(function (columnValue, index) {
75
+ return onMoveColumn ? (react_1.default.createElement(TableCellWithDnd_1.TableCellWithDnd, { key: columnValue.id, columnValue: columnValue, rowData: rowData, index: index, onMoveColumn: onMoveColumn, shouldRenderDragIndicator: false, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn })) : (react_1.default.createElement(TableCell_1.TableCell, { key: columnValue.id, columnValue: columnValue, rowData: rowData, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn }));
76
+ })));
77
+ };
78
+ exports.TableRowWithDnd = TableRowWithDnd;
@@ -1,26 +1,14 @@
1
- declare var _default: React.MemoExoticComponent<{
2
- ({ className, rowsData, columnsData, theadRowsNumber, setHoveredColumn, resetHoveredColumn }: {
3
- className: any;
4
- rowsData: any;
5
- columnsData: any;
6
- theadRowsNumber?: number;
7
- setHoveredColumn: any;
8
- resetHoveredColumn: any;
9
- }): JSX.Element;
10
- propTypes: {
11
- rowsData: PropTypes.Requireable<PropTypes.InferProps<{
12
- id: PropTypes.Requireable<string>;
13
- label: PropTypes.Requireable<string>;
14
- headCellRenderer: PropTypes.Requireable<(...args: any[]) => any>;
15
- cellRenderer: PropTypes.Requireable<(...args: any[]) => any>;
16
- }>[]>;
17
- columnsData: PropTypes.Requireable<object[]>;
18
- theadRowsNumber: PropTypes.Requireable<number>;
19
- className: PropTypes.Requireable<string>;
20
- setHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
21
- resetHoveredColumn: PropTypes.Requireable<(...args: any[]) => any>;
22
- };
23
- }>;
1
+ import React from 'react';
2
+ import { RowData, ColumnData } from './types';
3
+ declare type Props = {
4
+ className?: string;
5
+ rowsData: RowData[];
6
+ columnsData: ColumnData[];
7
+ theadRowsNumber?: number;
8
+ onMoveRow?: (dragId: string, hoverId: string) => void;
9
+ onMoveColumn?: (dragId: string, hoverId: string) => void;
10
+ setHoveredColumn?: (columnValue: ColumnData) => void;
11
+ resetHoveredColumn?: () => void;
12
+ };
13
+ declare const _default: React.MemoExoticComponent<({ className, rowsData, columnsData, theadRowsNumber, onMoveRow, onMoveColumn, setHoveredColumn, resetHoveredColumn }: Props) => JSX.Element>;
24
14
  export default _default;
25
- import PropTypes from "prop-types";
26
- import React from "react";
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
3
  if (k2 === undefined) k2 = k;
15
4
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -29,46 +18,22 @@ var __importStar = (this && this.__importStar) || function (mod) {
29
18
  __setModuleDefault(result, mod);
30
19
  return result;
31
20
  };
32
- var __importDefault = (this && this.__importDefault) || function (mod) {
33
- return (mod && mod.__esModule) ? mod : { "default": mod };
34
- };
35
21
  Object.defineProperty(exports, "__esModule", { value: true });
36
22
  var react_1 = __importStar(require("react"));
37
- var prop_types_1 = __importDefault(require("prop-types"));
38
- var DefaultHeadCellRenderer = function (_a) {
39
- var label = _a.label;
40
- return label || null;
41
- };
42
- var DefaultCellRenderer = function (_a) {
43
- var value = _a.value;
44
- return value || null;
45
- };
23
+ var TableRow_1 = require("./TableRow/TableRow");
24
+ var TableRowWithDnd_1 = require("./TableRowWithDnd/TableRowWithDnd");
25
+ var TableColumnDragLayer_1 = require("./TableColumnDragLayer/TableColumnDragLayer");
46
26
  var VerticalHeadingsTable = function (_a) {
47
- var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _b = _a.theadRowsNumber, theadRowsNumber = _b === void 0 ? 0 : _b, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
48
- var renderRow = function (rowData) {
49
- var CellRenderer = rowData.cellRenderer || DefaultCellRenderer;
50
- var HeadCellRenderer = rowData.headCellRenderer || DefaultHeadCellRenderer;
51
- return (react_1.default.createElement("tr", { key: rowData.id },
52
- react_1.default.createElement("th", { key: rowData.id },
53
- react_1.default.createElement(HeadCellRenderer, __assign({}, rowData))),
54
- columnsData.map(function (columnValue, index) { return (react_1.default.createElement("td", { key: index, onMouseOver: function () { return setHoveredColumn(columnValue); }, onMouseLeave: resetHoveredColumn },
55
- react_1.default.createElement(CellRenderer, { value: columnValue[rowData.id], columnValue: columnValue, rowData: rowData }))); })));
56
- };
57
- return (react_1.default.createElement("table", { className: className },
58
- theadRowsNumber > 0 && react_1.default.createElement("thead", null, rowsData.slice(0, theadRowsNumber).map(renderRow)),
59
- react_1.default.createElement("tbody", null, rowsData.slice(theadRowsNumber).map(renderRow))));
60
- };
61
- VerticalHeadingsTable.propTypes = {
62
- rowsData: prop_types_1.default.arrayOf(prop_types_1.default.shape({
63
- id: prop_types_1.default.string,
64
- label: prop_types_1.default.string,
65
- headCellRenderer: prop_types_1.default.func,
66
- cellRenderer: prop_types_1.default.func
67
- })),
68
- columnsData: prop_types_1.default.arrayOf(prop_types_1.default.object),
69
- theadRowsNumber: prop_types_1.default.number,
70
- className: prop_types_1.default.string,
71
- setHoveredColumn: prop_types_1.default.func,
72
- resetHoveredColumn: prop_types_1.default.func
27
+ var _b;
28
+ var className = _a.className, rowsData = _a.rowsData, columnsData = _a.columnsData, _c = _a.theadRowsNumber, theadRowsNumber = _c === void 0 ? 0 : _c, onMoveRow = _a.onMoveRow, onMoveColumn = _a.onMoveColumn, setHoveredColumn = _a.setHoveredColumn, resetHoveredColumn = _a.resetHoveredColumn;
29
+ var tableRef = react_1.useRef(null);
30
+ var tableHeight = (_b = tableRef === null || tableRef === void 0 ? void 0 : tableRef.current) === null || _b === void 0 ? void 0 : _b.offsetHeight;
31
+ return (react_1.default.createElement(react_1.default.Fragment, null,
32
+ react_1.default.createElement(TableColumnDragLayer_1.TableColumnDragLayer, { columnHeight: tableHeight }),
33
+ react_1.default.createElement("table", { ref: tableRef, className: className },
34
+ theadRowsNumber > 0 && (react_1.default.createElement("thead", null, rowsData.slice(0, theadRowsNumber).map(function (rowData, index) { return (react_1.default.createElement(TableRow_1.TableRow, { key: rowData.id, rowData: rowData, columnsData: columnsData, index: index, onMoveColumn: onMoveColumn, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn })); }))),
35
+ react_1.default.createElement("tbody", null, rowsData.slice(theadRowsNumber).map(function (rowData, index) {
36
+ return onMoveRow ? (react_1.default.createElement(TableRowWithDnd_1.TableRowWithDnd, { key: rowData.id, index: index + theadRowsNumber, rowData: rowData, columnsData: columnsData, onMoveRow: onMoveRow, onMoveColumn: onMoveColumn, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn })) : (react_1.default.createElement(TableRow_1.TableRow, { key: rowData.id, index: index + theadRowsNumber, rowData: rowData, columnsData: columnsData, onMoveColumn: onMoveColumn, setHoveredColumn: setHoveredColumn, resetHoveredColumn: resetHoveredColumn }));
37
+ })))));
73
38
  };
74
39
  exports.default = react_1.memo(VerticalHeadingsTable);
@@ -0,0 +1,6 @@
1
+ export declare const DefaultCellRenderer: ({ value }: {
2
+ value: any;
3
+ }) => any;
4
+ export declare const DefaultHeadCellRenderer: ({ label }: {
5
+ label: any;
6
+ }) => any;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultHeadCellRenderer = exports.DefaultCellRenderer = void 0;
4
+ var DefaultCellRenderer = function (_a) {
5
+ var value = _a.value;
6
+ return value || null;
7
+ };
8
+ exports.DefaultCellRenderer = DefaultCellRenderer;
9
+ var DefaultHeadCellRenderer = function (_a) {
10
+ var label = _a.label;
11
+ return label || null;
12
+ };
13
+ exports.DefaultHeadCellRenderer = DefaultHeadCellRenderer;