UNPKG

@grandlinex/react-components

Version:
137 lines (136 loc) 5.22 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useTableStore = useTableStore; exports.getCellValue = getCellValue; const react_1 = __importStar(require("react")); const Tooltip_1 = __importDefault(require("../tooltip/Tooltip")); const IconButton_1 = require("../button/IconButton"); const CheckBox_1 = __importDefault(require("../form/inputs/CheckBox")); const util_1 = require("../../util"); function useTableStore(props) { const ui = (0, util_1.useUIContext)(); const { extendRowRenderer, editMode } = props; const isSelectable = props.isSelectable ?? null; const [rowData, setRowData] = (0, react_1.useState)(props.rowData || []); const [columnDefs] = (0, react_1.useState)(props.columnDefs || []); const [rowAction] = (0, react_1.useState)(props.rowAction || []); const [selection, setSelection] = (0, react_1.useState)([]); const [hasExtend] = (0, react_1.useState)(!!extendRowRenderer); function getKey(index) { if (!isSelectable) { throw new Error('TableStore: isSelectable is not set'); } return typeof index === 'number' || typeof index === 'string' ? index : index[isSelectable]; } function rowSelected(index) { const ind = getKey(index); return selection.includes(ind); } function rowSelect(index) { const ind = getKey(index); if (!selection.includes(ind)) { props.onSelectionChange?.([...selection, ind]); setSelection([...selection, ind]); } } function rowUnSelect(index) { const ind = getKey(index); setSelection(selection.filter((i) => i !== ind)); } function hasEditMode() { return !!editMode; } function getColumDefs(add) { const def = []; if (isSelectable) { def.push({ headerName: ui.translation.get('glx.table.header.sel'), field: '', cellRenderer: (dat) => (react_1.default.createElement("div", { className: "glx-flex-row glx-flex-g-2" }, react_1.default.createElement(CheckBox_1.default, { onChange: () => { if (rowSelected(dat.data)) { rowUnSelect(dat.data); } else { rowSelect(dat.data); } }, checked: rowSelected(dat.data) }))), }); } def.push(...columnDefs); if (rowAction.length > 0 || hasExtend || editMode) { const rows = [...rowAction]; if (add) { rows.push(...add); } def.push({ headerName: ui.translation.get('glx.table.header.action'), field: '', cellRenderer: (dat) => (react_1.default.createElement("div", { className: "glx-flex-row glx-flex-g-2" }, rows.map((act) => { const x = act(dat); if (x.disabled) { return null; } return (react_1.default.createElement(Tooltip_1.default, { text: x.name, position: "left" }, react_1.default.createElement(IconButton_1.IconButton, { onClick: x.onClick }, x.icon))); }))), }); } return def; } (0, react_1.useEffect)(() => { setRowData(props.rowData || []); }, [props.rowData]); return { data: { rowData, }, api: { rowSelected, rowSelect, rowUnSelect, getColumDefs, editMode, hasEditMode, }, }; } function getCellValue(rot, col) { const path = col.field.split('.'); let value = rot; for (const cur of path) { value = value[cur]; if (value === undefined || value === null) { return ''; } } return value; }