From 45494483a080e398fdf6901a9b5ce5edc2d5c978 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 16 May 2023 13:42:46 +0300 Subject: [PATCH] fix build --- .../Calculation/builders/build-switch.tsx | 40 +++++++++++++++++++ .../Components/Calculation/builders/index.js | 1 + .../Calculation/config/elements-components.ts | 2 +- .../Calculation/config/elements-types.ts | 40 ++++++++++++------- packages/ui/elements/Button.tsx | 6 +++ packages/ui/elements/Checkbox.tsx | 6 +++ packages/ui/elements/Input.tsx | 6 +++ packages/ui/elements/Switch.tsx | 6 +++ packages/ui/elements/index.ts | 8 ++-- 9 files changed, 96 insertions(+), 19 deletions(-) create mode 100644 apps/web/Components/Calculation/builders/build-switch.tsx create mode 100644 packages/ui/elements/Button.tsx create mode 100644 packages/ui/elements/Checkbox.tsx create mode 100644 packages/ui/elements/Input.tsx create mode 100644 packages/ui/elements/Switch.tsx diff --git a/apps/web/Components/Calculation/builders/build-switch.tsx b/apps/web/Components/Calculation/builders/build-switch.tsx new file mode 100644 index 0000000..a3479a0 --- /dev/null +++ b/apps/web/Components/Calculation/builders/build-switch.tsx @@ -0,0 +1,40 @@ +import type { Elements } from '../config/map/values'; +import { useStoreValue } from './hooks'; +import { useStatus } from '@/stores/calculation/statuses/hooks'; +import { useValidation } from '@/stores/calculation/validation/hooks'; +import type { Values } from '@/stores/calculation/values/types'; +import type { SwitchChangeEventHandler } from 'antd/lib/switch'; +import { observer } from 'mobx-react-lite'; +import type { ComponentType } from 'react'; +import { Form } from 'ui/elements'; + +type BuilderProps = { + elementName: Elements; + valueName: Values; +}; + +export function buildSwitch( + Component: ComponentType, + { elementName, valueName }: BuilderProps +) { + return observer((props: T) => { + const [value, setValue] = useStoreValue(valueName); + const status = useStatus(elementName); + const { validateStatus, help } = useValidation(elementName); + + return ( + + { + setValue(checked); + }) as SwitchChangeEventHandler + } + disabled={status === 'Disabled'} + checked={value} + {...props} + /> + + ); + }); +} diff --git a/apps/web/Components/Calculation/builders/index.js b/apps/web/Components/Calculation/builders/index.js index 1417f77..d7dad18 100644 --- a/apps/web/Components/Calculation/builders/index.js +++ b/apps/web/Components/Calculation/builders/index.js @@ -3,4 +3,5 @@ export * from './build-check'; export { default as buildLink } from './build-link'; export { default as buildOptions } from './build-options'; export { default as buildReadonly } from './build-readonly'; +export * from './build-switch'; export * from './build-value'; diff --git a/apps/web/Components/Calculation/config/elements-components.ts b/apps/web/Components/Calculation/config/elements-components.ts index df236fa..323b557 100644 --- a/apps/web/Components/Calculation/config/elements-components.ts +++ b/apps/web/Components/Calculation/config/elements-components.ts @@ -73,7 +73,7 @@ const components = wrapComponentsMap({ selectCalcFinDepartment: e.Select, selectFinDepartmentRewardCondtion: e.Select, tbxFinDepartmentRewardSumm: e.InputNumber, - cbxInsDecentral: e.Switch, + cbxInsDecentral: e.Checkbox, tbxInsFranchise: e.InputNumber, cbxInsUnlimitDrivers: e.Switch, tbxInsAgeDrivers: e.InputNumber, diff --git a/apps/web/Components/Calculation/config/elements-types.ts b/apps/web/Components/Calculation/config/elements-types.ts index 9eaa2a0..58834fd 100644 --- a/apps/web/Components/Calculation/config/elements-types.ts +++ b/apps/web/Components/Calculation/config/elements-types.ts @@ -4,7 +4,15 @@ import * as b from '../builders'; import type { Elements as ActionElements } from './map/actions'; import type { Elements as ValuesElements } from './map/values'; -type ElementTypes = 'Action' | 'Check' | 'Link' | 'Options' | 'Readonly' | 'Value'; +type ElementTypes = + | 'Action' + | 'Check' + | 'Link' + | 'Number' + | 'Options' + | 'Readonly' + | 'Switch' + | 'Value'; type Builders = | typeof b.buildAction | typeof b.buildOptions @@ -49,6 +57,10 @@ const t = wrapTypeGetters({ typeName: 'Check', builder: b.buildCheck, }), + Switch: () => ({ + typeName: 'Switch', + builder: b.buildSwitch, + }), }); function wrapElementsTypes>(arg: E) { @@ -94,25 +106,25 @@ const types = wrapElementsTypes({ tbxFinDepartmentRewardSumm: t.Number, cbxInsDecentral: t.Check, tbxInsFranchise: t.Number, - cbxInsUnlimitDrivers: t.Check, + cbxInsUnlimitDrivers: t.Switch, tbxInsAgeDrivers: t.Number, tbxInsExpDrivers: t.Number, - cbxLastPaymentRedemption: t.Check, - cbxPriceWithDiscount: t.Check, - cbxFullPriceWithDiscount: t.Check, - cbxCostIncrease: t.Check, - cbxInsurance: t.Check, - cbxRegistrationQuote: t.Check, - cbxTechnicalCardQuote: t.Check, - cbxNSIB: t.Check, + cbxLastPaymentRedemption: t.Switch, + cbxPriceWithDiscount: t.Switch, + cbxFullPriceWithDiscount: t.Switch, + cbxCostIncrease: t.Switch, + cbxInsurance: t.Switch, + cbxRegistrationQuote: t.Switch, + cbxTechnicalCardQuote: t.Switch, + cbxNSIB: t.Switch, tbxQuoteName: t.Value, - cbxQuoteRedemptionGraph: t.Check, - cbxShowFinGAP: t.Check, + cbxQuoteRedemptionGraph: t.Switch, + cbxShowFinGAP: t.Switch, tbxCreditRate: t.Number, tbxMaxPriceChange: t.Number, tbxImporterRewardPerc: t.Number, tbxImporterRewardRub: t.Number, - cbxDisableChecks: t.Check, + cbxDisableChecks: t.Switch, tbxMileage: t.Number, tbxTotalPayments: t.Number, tbxVehicleTaxInYear: t.Number, @@ -179,7 +191,7 @@ const types = wrapElementsTypes({ selectLeasingWithoutKasko: t.Options, tbxVIN: t.Value, selectUser: t.Options, - cbxSupplierFinancing: t.Check, + cbxSupplierFinancing: t.Switch, labelLeaseObjectRisk: t.Readonly, tbxInsKaskoPriceLeasePeriod: t.Readonly, diff --git a/packages/ui/elements/Button.tsx b/packages/ui/elements/Button.tsx new file mode 100644 index 0000000..0884dbc --- /dev/null +++ b/packages/ui/elements/Button.tsx @@ -0,0 +1,6 @@ +import type { ButtonProps } from 'antd'; +import { Button as AntdButton } from 'antd'; + +export function Button(props: ButtonProps) { + return {props.children}; +} diff --git a/packages/ui/elements/Checkbox.tsx b/packages/ui/elements/Checkbox.tsx new file mode 100644 index 0000000..2e8145e --- /dev/null +++ b/packages/ui/elements/Checkbox.tsx @@ -0,0 +1,6 @@ +import type { CheckboxProps } from 'antd'; +import { Checkbox as AntdCheckbox } from 'antd'; + +export function Checkbox(props: CheckboxProps) { + return {props.children}; +} diff --git a/packages/ui/elements/Input.tsx b/packages/ui/elements/Input.tsx new file mode 100644 index 0000000..9966b07 --- /dev/null +++ b/packages/ui/elements/Input.tsx @@ -0,0 +1,6 @@ +import type { InputProps } from 'antd'; +import { Input as AntdInput } from 'antd'; + +export function Input(props: InputProps) { + return {props.children}; +} diff --git a/packages/ui/elements/Switch.tsx b/packages/ui/elements/Switch.tsx new file mode 100644 index 0000000..bb39eca --- /dev/null +++ b/packages/ui/elements/Switch.tsx @@ -0,0 +1,6 @@ +import type { SwitchProps } from 'antd'; +import { Switch as AntdSwitch } from 'antd'; + +export function Switch(props: SwitchProps) { + return ; +} diff --git a/packages/ui/elements/index.ts b/packages/ui/elements/index.ts index a5e0179..3d043d1 100644 --- a/packages/ui/elements/index.ts +++ b/packages/ui/elements/index.ts @@ -9,25 +9,25 @@ notification.config({ placement: 'bottomRight', }); +export * from './Button'; +export * from './Checkbox'; export { default as AntdConfig } from './Config'; +export * from './Input'; export { default as Link } from './Link'; export { default as Radio } from './Radio'; export { default as Segmented } from './Segmented'; export { default as Select } from './Select'; +export * from './Switch'; export { default as Text } from './Text'; export { Alert, Badge, - Button, - Checkbox, Divider, Form, - Input, InputNumber, message, notification, Result, - Switch, Table, Tabs, Tag,