166 lines
5.0 KiB
TypeScript

import Button from 'Elements/Button';
import Checkbox from 'Elements/Checkbox';
import Input from 'Elements/Input';
import InputNumber from 'Elements/InputNumber';
import Link from 'Elements/Link';
import Radio from 'Elements/Radio';
import Segmented from 'Elements/Segmented';
import Select from 'Elements/Select';
import Switch from 'Elements/Switch';
import Text from 'Elements/Text';
import type { ComponentProps } from 'react';
import type { Elements as ActionElements } from './map/actions';
import type { Elements as ComputedElements } from './map/computed';
import type { Elements as ValuesElements } from './map/values';
function wrapComponentsMap<
C,
T extends Record<ValuesElements | ComputedElements | ActionElements, C>
>(arg: T) {
return arg;
}
const components = wrapComponentsMap({
selectProduct: Select,
selectClientRisk: Select,
selectClientType: Select,
selectSupplierCurrency: Select,
tbxLeaseObjectPrice: InputNumber,
tbxLeaseObjectPriceWthtVAT: InputNumber,
tbxVATInLeaseObjectPrice: InputNumber,
tbxSupplierDiscountRub: InputNumber,
tbxSupplierDiscountPerc: InputNumber,
radioBalanceHolder: Radio,
tbxSaleBonus: InputNumber,
tbxFirstPaymentPerc: InputNumber,
tbxFirstPaymentRub: InputNumber,
radioLastPaymentRule: Radio,
tbxLastPaymentPerc: InputNumber,
tbxLastPaymentRub: InputNumber,
tbxRedemptionPaymentSum: InputNumber,
tbxLeasingPeriod: InputNumber,
radioGraphType: Radio,
tbxParmentsDecreasePercent: InputNumber,
selectSeasonType: Select,
selectHighSeasonStart: Select,
tbxComissionPerc: InputNumber,
tbxComissionRub: InputNumber,
selectLeaseObjectType: Select,
selectBrand: Select,
selectModel: Select,
selectConfiguration: Select,
labelDepreciationGroup: Text,
cbxLeaseObjectUsed: Checkbox,
radioDeliveryTime: Segmented,
tbxLeaseObjectCount: InputNumber,
selectLeaseObjectUseFor: Select,
tbxLeaseObjectYear: InputNumber,
selectLeaseObjectCategory: Select,
selectEngineType: Select,
tbxLeaseObjectMotorPower: InputNumber,
tbxEngineVolume: InputNumber,
tbxMaxMass: InputNumber,
tbxCountSeats: InputNumber,
tbxMaxSpeed: InputNumber,
cbxWithTrailer: Checkbox,
selectDealer: Select,
selectDealerPerson: Select,
selectDealerRewardCondition: Select,
tbxDealerRewardSumm: InputNumber,
selectDealerBroker: Select,
selectDealerBrokerRewardCondition: Select,
tbxDealerBrokerRewardSumm: InputNumber,
selectIndAgent: Select,
selectIndAgentRewardCondition: Select,
tbxIndAgentRewardSumm: InputNumber,
selectCalcDoubleAgent: Select,
selectCalcDoubleAgentRewardCondition: Select,
tbxCalcDoubleAgentRewardSumm: InputNumber,
selectCalcBroker: Select,
selectCalcBrokerRewardCondition: Select,
tbxCalcBrokerRewardSum: InputNumber,
selectCalcFinDepartment: Select,
selectFinDepartmentRewardCondtion: Select,
tbxFinDepartmentRewardSumm: InputNumber,
cbxInsDecentral: Switch,
radioInsKaskoType: Radio,
tbxInsFranchise: InputNumber,
cbxInsUnlimitDrivers: Switch,
tbxInsAgeDrivers: InputNumber,
tbxInsExpDrivers: InputNumber,
tbxINNForCalc: InputNumber,
selectGPSBrand: Select,
selectGPSModel: Select,
selectRegionRegistration: Select,
selectTownRegistration: Select,
radioInfuranceOPF: Radio,
selectRegistration: Select,
selectInsNSIB: Select,
selectRequirementTelematic: Select,
selectTracker: Select,
selectTelematic: Select,
selectTechnicalCard: Select,
cbxLastPaymentRedemption: Switch,
cbxPriceWithDiscount: Switch,
cbxFullPriceWithDiscount: Switch,
cbxCostIncrease: Switch,
cbxInsurance: Switch,
cbxRegistrationQuote: Switch,
cbxTechnicalCardQuote: Switch,
cbxNSIB: Switch,
cbxQuoteRedemptionGraph: Switch,
cbxShowFinGAP: Switch,
tbxQuoteName: Input,
radioQuoteContactGender: Radio,
cbxDisableChecks: Switch,
selectTarif: Select,
tbxCreditRate: InputNumber,
selectRate: Select,
tbxMaxPriceChange: InputNumber,
tbxImporterRewardPerc: InputNumber,
tbxImporterRewardRub: InputNumber,
selectLead: Select,
selectOpportunity: Select,
selectQuote: Select,
cbxRecalcWithRevision: Checkbox,
tbxIRR_Perc: InputNumber,
tbxMileage: InputNumber,
tbxEngineHours: InputNumber,
radioCalcType: Segmented,
tbxTotalPayments: InputNumber,
radioObjectRegistration: Radio,
selectObjectRegionRegistration: Select,
tbxVehicleTaxInYear: InputNumber,
tbxVehicleTaxInLeasingPeriod: InputNumber,
selectObjectCategoryTax: Select,
selectObjectTypeTax: Select,
radioTypePTS: Radio,
selectLegalClientRegion: Select,
selectLegalClientTown: Select,
selectSubsidy: Select,
selectFuelCard: Select,
labelSubsidySum: Text,
tbxMinPriceChange: InputNumber,
/** Computed Elements */
labelLeaseObjectRisk: Text,
tbxInsKaskoPriceLeasePeriod: InputNumber,
labelIrrInfo: Text,
labelRegistrationDescription: Text,
/** Button Elements */
btnCreateKP: Button,
btnCalculate: Button,
/** Link Elements */
linkDownloadKp: Link,
});
export default components;
type ComponentsTypes = typeof components;
export type ElementsProps = {
[Component in keyof ComponentsTypes]: ComponentProps<ComponentsTypes[Component]>;
};