_cellDecorator.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /**
  2. * Adds appropriate CSS class to table cell, based on cellProperties
  3. */
  4. import { addClass, removeClass } from './../helpers/dom/element';
  5. function cellDecorator(instance, TD, row, col, prop, value, cellProperties) {
  6. const classesToAdd = [];
  7. const classesToRemove = [];
  8. if (cellProperties.className) {
  9. if (TD.className) {
  10. TD.className = `${TD.className} ${cellProperties.className}`;
  11. } else {
  12. TD.className = cellProperties.className;
  13. }
  14. }
  15. if (cellProperties.readOnly) {
  16. classesToAdd.push(cellProperties.readOnlyCellClassName);
  17. }
  18. if (cellProperties.valid === false && cellProperties.invalidCellClassName) {
  19. classesToAdd.push(cellProperties.invalidCellClassName);
  20. } else {
  21. classesToRemove.push(cellProperties.invalidCellClassName);
  22. }
  23. if (cellProperties.wordWrap === false && cellProperties.noWordWrapClassName) {
  24. classesToAdd.push(cellProperties.noWordWrapClassName);
  25. }
  26. if (!value && cellProperties.placeholder) {
  27. classesToAdd.push(cellProperties.placeholderCellClassName);
  28. }
  29. removeClass(TD, classesToRemove);
  30. addClass(TD, classesToAdd);
  31. }
  32. export default cellDecorator;