swimlane/ngx-ui

View on GitHub
projects/swimlane/ngx-ui/src/lib/components/split/get-min-max-pct.util.ts

Summary

Maintainability
A
1 hr
Test Coverage
import { basisToValue } from './basis-to-value.util';
import { isPercent } from './is-percent.util';

export function getMinMaxPct(
  minBasis: string,
  maxBasis: string,
  grow: string,
  shrink: string,
  baseBasisPct: number,
  basisToPx: number
) {
  // minimum and maximum basis determined by max/min inputs
  let minBasisPct = isPercent(minBasis) ? basisToValue(minBasis) : basisToValue(minBasis) / basisToPx;
  let maxBasisPct = isPercent(maxBasis) ? basisToValue(maxBasis) : basisToValue(maxBasis) / basisToPx;

  // minimum and maximum basis determined by flex inputs
  minBasisPct = Math.max(minBasisPct || 0, shrink === '0' ? baseBasisPct : 0);
  maxBasisPct = Math.min(maxBasisPct || 100, grow === '0' ? baseBasisPct : 100);

  return [minBasisPct, maxBasisPct];
}