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 >(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, linkLeadUrl: Link, linkOpportunityUrl: Link, linkQuoteUrl: Link, }); export default components; type ComponentsTypes = typeof components; export type ElementsProps = { [Component in keyof ComponentsTypes]: ComponentProps; };