Advertisement
the0938

Untitled

Aug 26th, 2021 (edited)
1,157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { useState } from 'react';
  2.  
  3. import AmountHelper from 'helpers/AmountHelper';
  4.  
  5. import ContractsFiltersRange from './ContractsFiltersRange';
  6.  
  7. /**
  8.  * Отображает поле ввода размера долга.
  9.  */
  10. const ContractsFiltersDebtAmount = () => {
  11.   const [currentFromValue, setFromValue] = useState();
  12.   const [currentToValue, setToValue] = useState();
  13.  
  14.   const options = [
  15.     { from: 1000, to: 5000 },
  16.     { from: 5000, to: 15000 },
  17.     { from: 15000, to: 25000 },
  18.     { from: 25000, to: 100000 },
  19.   ];
  20.  
  21.   const minValue = 0;
  22.   const maxValue = 100000;
  23.  
  24.   /**
  25.    * Отрисовывает вариант подстановки как элемент React, который отображается
  26.    * в выпадающем меню. К примеру, для пары `1000` и `5000` функция вернёт
  27.    * `1 000 - 5 000 ₽`.
  28.    * @param option Элемент массива `options`.
  29.    */
  30.   function renderOption(option) {
  31.     const fromText = AmountHelper.convertSystemToPretty(option.from);
  32.     const toText = AmountHelper.convertSystemToPretty(option.to);
  33.  
  34.     return (
  35.       <>
  36.         {fromText} - {toText} <i></i>
  37.       </>
  38.     );
  39.   }
  40.  
  41.   /**
  42.    * Возвращает `-1`, если первое значение меньше второго, `0` - если они равны,
  43.    * и `1` - если больше.
  44.    * @param valueA Первое значение.
  45.    * @param valueB Второе значение.
  46.    */
  47.   function compareValues(valueA, valueB) {
  48.     return valueA - valueB;
  49.   }
  50.  
  51.   /**
  52.    * Обновляет изменение текущего значения поля ввода.
  53.    * @param fromValue Минимальное значение.
  54.    * @param toValue Максимальное значение.
  55.    */
  56.   function handleChange(fromValue, toValue) {
  57.     setFromValue(fromValue);
  58.     setToValue(toValue);
  59.   }
  60.  
  61.   return (
  62.     <ContractsFiltersRange
  63.       compareValues={compareValues}
  64.       renderOption={renderOption}
  65.       onChange={handleChange}
  66.       fromValue={currentFromValue}
  67.       toValue={currentToValue}
  68.       minValue={minValue}
  69.       maxValue={maxValue}
  70.       options={options}
  71.     />
  72.   );
  73. };
  74.  
  75. export default ContractsFiltersDebtAmount;
  76.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement