148 lines
4.1 KiB
TypeScript
148 lines
4.1 KiB
TypeScript
/* eslint-disable object-curly-newline */
|
||
import Link from 'Elements/Link';
|
||
import Tooltip from 'Elements/Tooltip';
|
||
import type { ComponentProps } from 'react';
|
||
import buildReadonly from '../../builders/build-readonly';
|
||
import builders from '../elements-builders';
|
||
import components from '../elements-components';
|
||
import elementsProps from '../elements-props';
|
||
import titles from '../elements-titles';
|
||
import map from '../map';
|
||
import { Container, Head } from './layout';
|
||
import type { RenderProps } from './types';
|
||
|
||
const defaultLinkProps: ComponentProps<typeof Link> = {
|
||
text: 'Открыть в CRM',
|
||
type: 'link',
|
||
};
|
||
|
||
const overrideRender: Partial<Record<keyof typeof map, RenderProps>> = {
|
||
selectLead: {
|
||
render: () => {
|
||
const title = titles.selectLead;
|
||
const valueName = map.selectLead;
|
||
const Component = components.selectLead;
|
||
const props = elementsProps.selectLead;
|
||
const builder = builders.selectLead;
|
||
|
||
const Element = builder(Component, {
|
||
elementName: 'selectLead',
|
||
valueName,
|
||
});
|
||
|
||
const LinkComponent = buildReadonly(Link, {
|
||
valueName: 'leadUrl',
|
||
});
|
||
|
||
return (
|
||
<Container key="selectLead">
|
||
<Head title={title} addon={<LinkComponent {...defaultLinkProps} />} />
|
||
<Element {...props} />
|
||
</Container>
|
||
);
|
||
},
|
||
},
|
||
|
||
selectOpportunity: {
|
||
render: () => {
|
||
const title = titles.selectOpportunity;
|
||
const valueName = map.selectOpportunity;
|
||
const Component = components.selectOpportunity;
|
||
const props = elementsProps.selectOpportunity;
|
||
const builder = builders.selectOpportunity;
|
||
|
||
const Element = builder(Component, {
|
||
elementName: 'selectOpportunity',
|
||
valueName,
|
||
});
|
||
|
||
const LinkComponent = buildReadonly(Link, {
|
||
valueName: 'opportunityUrl',
|
||
});
|
||
|
||
return (
|
||
<Container key="selectOpportunity">
|
||
<Head title={title} addon={<LinkComponent {...defaultLinkProps} />} />
|
||
<Element {...props} />
|
||
</Container>
|
||
);
|
||
},
|
||
},
|
||
|
||
selectQuote: {
|
||
render: () => {
|
||
const title = titles.selectQuote;
|
||
const valueName = map.selectQuote;
|
||
const Component = components.selectQuote;
|
||
const props = elementsProps.selectQuote;
|
||
const builder = builders.selectQuote;
|
||
|
||
const Element = builder(Component, {
|
||
elementName: 'selectQuote',
|
||
valueName,
|
||
});
|
||
|
||
const LinkComponent = buildReadonly(Link, {
|
||
valueName: 'quoteUrl',
|
||
});
|
||
|
||
return (
|
||
<Container key="selectQuote">
|
||
<Head title={title} addon={<LinkComponent {...defaultLinkProps} />} />
|
||
<Element {...props} />
|
||
</Container>
|
||
);
|
||
},
|
||
},
|
||
|
||
tbxVehicleTaxInYear: {
|
||
render: () => {
|
||
const title = titles.tbxVehicleTaxInYear;
|
||
const valueName = map.tbxVehicleTaxInYear;
|
||
const Component = components.tbxVehicleTaxInYear;
|
||
const props = elementsProps.tbxVehicleTaxInYear;
|
||
const builder = builders.tbxVehicleTaxInYear;
|
||
|
||
const Element = builder(Component, {
|
||
elementName: 'tbxVehicleTaxInYear',
|
||
valueName,
|
||
});
|
||
|
||
return (
|
||
<Tooltip title="Без учета налога на роскошь" placement="topLeft">
|
||
<Container>
|
||
<Head title={title} />
|
||
<Element {...props} />
|
||
</Container>
|
||
</Tooltip>
|
||
);
|
||
},
|
||
},
|
||
|
||
selectHighSeasonStart: {
|
||
render: () => {
|
||
const title = titles.selectHighSeasonStart;
|
||
const valueName = map.selectHighSeasonStart;
|
||
const Component = components.selectHighSeasonStart;
|
||
const props = elementsProps.selectHighSeasonStart;
|
||
const builder = builders.selectHighSeasonStart;
|
||
|
||
const Element = builder(Component, {
|
||
elementName: 'selectHighSeasonStart',
|
||
valueName,
|
||
});
|
||
|
||
return (
|
||
<Tooltip title="С какого платежа начинается полный высокий сезон" placement="topLeft">
|
||
<Container>
|
||
<Head title={title} />
|
||
<Element {...props} />
|
||
</Container>
|
||
</Tooltip>
|
||
);
|
||
},
|
||
},
|
||
};
|
||
|
||
export default overrideRender;
|