kea-react
Version:
Componentes comunes de react
23 lines (21 loc) • 1.19 kB
text/typescript
import { Grid2Column } from "./column";
/**Mezcla una definición de una columna con una función de estilo, dandole prioridad al estilo original de las columnas */
function mixStyle<TItem, TShared>(columm: Grid2Column<TItem, TShared>, style: (item: TItem, shared: TShared) => React.CSSProperties): Grid2Column<TItem, TShared> {
return {
...columm,
cell: (row) => {
const ret = columm.cell(row);
const retStyleFunc = ret.style || (() => ({}));
return {
...ret,
style: (itemData: TShared) => ({ ...style(row, itemData), ...retStyleFunc(itemData) })
}
}
}
}
/**Le agrega un estilo a todas las celdas de un arreglo de Grid2Column. Si la celda ya define su propio estilo, este es mezclado con el estido dado por la funcion
* rowStyle con el operador spread (...), dandole prioridad a las propiedades del estilo definido por la celda
*/
export function applyRowStyleToColumns<TItem, TShared>(columns: Grid2Column<TItem, TShared>[], rowStyle: (item: TItem, shared: TShared) => React.CSSProperties) {
return columns.map(col => mixStyle(col, rowStyle));
}