BootstrapGrid.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. export default class BootstrapGrid {
  2. constructor(colsRatios, responsiveSize) {
  3. this.colsRatios = BootstrapGrid.validateColsRatios(colsRatios);
  4. this.responsiveSize = BootstrapGrid.validateResponsiveSize(responsiveSize);
  5. }
  6. static ResponsiveSize = {
  7. XS_SIZE: 'xs',
  8. SM_SIZE: 'sm',
  9. MD_SIZE: 'md',
  10. };
  11. static validateColsRatios(colsRatios) {
  12. if (colsRatios.length < 2 || colsRatios.length > 4) {
  13. throw new Error('Incorrect array length of cols ratios');
  14. }
  15. const ratiosTotal = colsRatios.reduce((total, ratio) => {
  16. return total + ratio;
  17. }, 0);
  18. if (ratiosTotal !== 12) {
  19. throw new Error('Incorrect cols ratios value');
  20. }
  21. return colsRatios;
  22. }
  23. static validateResponsiveSize(responsiveSize) {
  24. if (
  25. responsiveSize === BootstrapGrid.ResponsiveSize.XS_SIZE ||
  26. responsiveSize === BootstrapGrid.ResponsiveSize.SM_SIZE ||
  27. responsiveSize === BootstrapGrid.ResponsiveSize.MD_SIZE
  28. ) {
  29. return responsiveSize;
  30. }
  31. throw new Error('Incorrect responsive size');
  32. }
  33. }