UNPKG

@platform/ui.datagrid

Version:

Isolated tabular DataGrid.

40 lines (39 loc) 1.43 kB
import { filter } from 'rxjs/operators'; import { toSelectionValues, DEFAULT, util } from '../common'; const STYLE = ['BOLD', 'ITALIC', 'UNDERLINE']; export function init(args) { const { grid, command$ } = args; const style$ = command$.pipe(filter((e) => STYLE.includes(e.command)), filter((e) => !e.isCancelled)); style$.subscribe((e) => { const command = e.command; const field = toField(command); const values = toSelectionValues({ cells: grid.data.cells, selection: e.selection }); const defaults = DEFAULT.CELL.PROPS.style; const changes = Object.keys(values).reduce((acc, key) => { const cell = grid.cell(key); const value = cell.data.value; const error = cell.data.error; const props = util.cell.value.toggleCellProp({ defaults, props: cell.data.props, section: 'style', field, }); acc[key] = { value, props, error }; return acc; }, {}); grid.changeCells(changes, { source: 'PROPS/style' }); }); } const toField = (command) => { switch (command) { case 'BOLD': return 'bold'; case 'ITALIC': return 'italic'; case 'UNDERLINE': return 'underline'; default: throw new Error(`Command '${command}' not supported`); } };