luna-data-grid
Version:
Grid for displaying datasets
47 lines (46 loc) • 2.72 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var index_1 = __importDefault(require("./index"));
var each_1 = __importDefault(require("licia/each"));
var hooks_1 = require("../share/hooks");
var LunaDataGrid = function (props) {
var containerRef = (0, react_1.useRef)(null);
var dataGridRef = (0, react_1.useRef)();
var prevProps = (0, hooks_1.usePrevious)(props);
(0, react_1.useEffect)(function () {
dataGridRef.current = new index_1.default(containerRef.current, {
columns: props.columns,
height: props.height,
maxHeight: props.maxHeight,
minHeight: props.minHeight,
filter: props.filter,
selectable: props.selectable,
headerContextMenu: props.headerContextMenu,
theme: props.theme,
});
props.onCreate && props.onCreate(dataGridRef.current);
dataGridRef.current.setData(props.data, props.uniqueId);
return function () { var _a; return (_a = dataGridRef.current) === null || _a === void 0 ? void 0 : _a.destroy(); };
}, []);
(0, hooks_1.useNonInitialEffect)(function () {
if (dataGridRef.current) {
dataGridRef.current.setData(props.data, props.uniqueId);
}
}, [props.data]);
(0, hooks_1.useEvent)(dataGridRef, 'select', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onSelect, props.onSelect);
(0, hooks_1.useEvent)(dataGridRef, 'deselect', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onDeselect, props.onDeselect);
(0, hooks_1.useEvent)(dataGridRef, 'click', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onClick, props.onClick);
(0, hooks_1.useEvent)(dataGridRef, 'dblclick', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onDoubleClick, props.onDoubleClick);
(0, hooks_1.useEvent)(dataGridRef, 'contextmenu', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onContextMenu, props.onContextMenu);
(0, hooks_1.useEvent)(dataGridRef, 'changeColumn', prevProps === null || prevProps === void 0 ? void 0 : prevProps.onColumnChange, props.onColumnChange);
(0, each_1.default)(['theme', 'height', 'maxHeight', 'minHeight', 'filter', 'columns'], function (key) {
(0, hooks_1.useOption)(dataGridRef, key, props[key]);
});
return (0, jsx_runtime_1.jsx)("div", { className: props.className || '', ref: containerRef });
};
exports.default = LunaDataGrid;