UNPKG

luna-data-grid

Version:

Grid for displaying datasets

47 lines (46 loc) 2.72 kB
"use strict"; 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;