13c344fba6fb9715e0e80a7191187c5a8866882a01e357106a81f464c6029a336f7249b40a2e3eb99d704ce656214954714ccfe959304391369a37de2d4816 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import numbro from 'numbro';
  2. import {getRenderer} from './index';
  3. import {isNumeric} from './../helpers/number';
  4. /**
  5. * Numeric cell renderer
  6. *
  7. * @private
  8. * @renderer NumericRenderer
  9. * @dependencies numbro
  10. * @param {Object} instance Handsontable instance
  11. * @param {Element} TD Table cell where to render
  12. * @param {Number} row
  13. * @param {Number} col
  14. * @param {String|Number} prop Row object property name
  15. * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!)
  16. * @param {Object} cellProperties Cell properties (shared by cell renderer and editor)
  17. */
  18. function numericRenderer(instance, TD, row, col, prop, value, cellProperties) {
  19. if (isNumeric(value)) {
  20. if (typeof cellProperties.language !== 'undefined') {
  21. numbro.culture(cellProperties.language);
  22. }
  23. value = numbro(value).format(cellProperties.format || '0');
  24. const className = cellProperties.className || '';
  25. let classArr = className.length ? className.split(' ') : [];
  26. if (classArr.indexOf('htLeft') < 0 && classArr.indexOf('htCenter') < 0 &&
  27. classArr.indexOf('htRight') < 0 && classArr.indexOf('htJustify') < 0) {
  28. classArr.push('htRight');
  29. }
  30. if (classArr.indexOf('htNumeric') < 0) {
  31. classArr.push('htNumeric');
  32. }
  33. cellProperties.className = classArr.join(' ');
  34. }
  35. getRenderer('text')(instance, TD, row, col, prop, value, cellProperties);
  36. }
  37. export default numericRenderer;