UNPKG

@grafana/ui

Version:
69 lines (66 loc) 2.27 kB
import { useCallback } from 'react'; import { getFieldDisplayName } from '@grafana/data'; "use strict"; function useTableStateReducer({ onColumnResize, onSortByChange, data }) { return useCallback( (newState, action) => { var _a, _b, _c, _d; switch (action.type) { case "columnDoneResizing": if (onColumnResize) { const info = (_b = (_a = newState.columnResizing) == null ? void 0 : _a.headerIdWidths) == null ? void 0 : _b[0]; const columnIdString = info == null ? void 0 : info[0]; const fieldIndex = parseInt(columnIdString, 10); const width = Math.round((_c = newState.columnResizing.columnWidths) == null ? void 0 : _c[columnIdString]); const field = (_d = data.fields) == null ? void 0 : _d[fieldIndex]; if (!field) { return newState; } const fieldDisplayName = getFieldDisplayName(field, data); onColumnResize(fieldDisplayName, width); } case "toggleSortBy": if (onSortByChange) { const sortByFields = []; for (const sortItem of newState.sortBy) { const field = data.fields[parseInt(sortItem.id, 10)]; if (!field) { continue; } sortByFields.push({ displayName: getFieldDisplayName(field, data), desc: sortItem.desc }); } onSortByChange(sortByFields); } case "toggleRowExpanded": { if (action.id) { return { ...newState, lastExpandedOrCollapsedIndex: parseInt(action.id, 10) }; } } } return newState; }, [data, onColumnResize, onSortByChange] ); } function getInitialState(initialSortBy, columns) { const state = {}; if (initialSortBy) { state.sortBy = []; for (const sortBy of initialSortBy) { for (const col of columns) { if (col.Header === sortBy.displayName) { state.sortBy.push({ id: col.id, desc: sortBy.desc }); } } } } return state; } export { getInitialState, useTableStateReducer }; //# sourceMappingURL=reducer.mjs.map