@bytebrand/fe-ui-core 4.8.109 → 4.8.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/media/locales/de/promoSlider.json +0 -1
- package/media/locales/en/promoSlider.json +0 -1
- package/package.json +5 -3
- package/source/components/AccordionWidget/AccordionWidget.styl +1 -13
- package/source/components/AccordionWidget/AccordionWidget.tsx +8 -49
- package/source/components/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +2 -2
- package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +0 -24
- package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +2 -1
- package/source/components/OfferPanel/OfferPanel.tsx +1 -1
- package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +11 -23
- package/source/components/VehicleDetailedSidebar/partials/Properties.styl +0 -5
- package/source/components/VehicleDetailedSidebar/partials/Properties.tsx +18 -56
- package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.tsx +6 -2
- package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +0 -42
- package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +11 -23
- package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +5 -60
- package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +12 -36
- package/source/components/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +2 -3
- package/source/components/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.tsx +7 -18
- package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +1 -4
- package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +2 -3
- package/source/components/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +1 -1
- package/source/components/VehicleSmallCard/VehicleSmallCard.styl +2 -67
- package/source/components/VehicleSmallCard/VehicleSmallCard.tsx +3 -49
- package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.styled.tsx +1 -4
- package/source/components/_common/MaterialTooltip/MaterialTooltip.tsx +3 -4
- package/source/components/_common/withStats/withStats.styl +0 -10
- package/source/framework/DataTransformers.ts +0 -2
- package/source/framework/constants/common.ts +4 -8
- package/source/framework/types/types.ts +0 -1
- package/source/framework/vehiclesProps/decoratedLightProps.tsx +18 -109
- package/source/framework/vehiclesProps/decoratedProps.tsx +9 -68
- package/source/framework/vehiclesProps/vehicleDetails.ts +1 -3
- package/source/locales/data.ts +3 -13
- package/.husky/pre-push +0 -4
- package/.storybook/addons.js +0 -4
- package/.storybook/config.js +0 -64
- package/.storybook/postcss.config.js +0 -6
- package/.storybook/preview-head.html +0 -10
- package/.storybook/webpack.config.js +0 -130
- package/__tests__/components/Checkout/OrderOverviewItem/OrderOverviewItem.test.tsx +0 -42
- package/__tests__/components/Checkout/PaymentTypeCard/PaymentTypeCard.test.tsx +0 -50
- package/__tests__/components/Checkout/RadioGroup.test.tsx +0 -95
- package/__tests__/components/Checkout/ServiceCardWrapper.test.tsx +0 -53
- package/__tests__/components/Checkout/Switcher.test.tsx +0 -43
- package/__tests__/components/UserDasboardPage/sections/CheckoutSection/CheckoutSection.test.tsx +0 -613
- package/__tests__/components/UserDasboardPage/sections/FavoriteSection/FavoriteSection.test.tsx +0 -335
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/AdditionalOrderInfo.test.tsx +0 -127
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCar.test.tsx +0 -58
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCard.test.tsx +0 -74
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusSection.test.tsx +0 -62
- package/__tests__/components/UserDasboardPage/sections/RequestedCarsSection/RequestedCarsSection.test.tsx +0 -117
- package/__tests__/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.test.tsx +0 -58
- package/__tests__/components/VehicleSmallCard/VehicleInfo.test.tsx +0 -88
- package/__tests__/components/VehicleSmallCard/VehicleTitle.test.tsx +0 -91
- package/__tests__/components/_common/Badge/Badge.test.tsx +0 -15
- package/__tests__/components/_common/IconSVG/IconSVG.test.tsx +0 -23
- package/__tests__/components/_common/Image/Image.test.tsx +0 -82
- package/__tests__/components/_common/MaterialAutocomplete/MaterialAutocomplete.test.tsx +0 -49
- package/__tests__/components/_common/MaterialDatePicker/MaterialDatePicker.test.tsx +0 -54
- package/__tests__/components/_common/MaterialField/MaterialField.test.tsx +0 -58
- package/__tests__/components/_common/StarButton/StarButton.test.tsx +0 -46
- package/__tests__/mockedData/financingConfig.js +0 -202
- package/__tests__/mockedData/mockedPendingRequestedCar.js +0 -69
- package/__tests__/utils/CommonUtils/addPrefixToKeys.test.ts +0 -18
- package/__tests__/utils/CommonUtils/arrToObj.test.js +0 -32
- package/__tests__/utils/CommonUtils/checkRangeValuesOnEqual.test.ts +0 -17
- package/__tests__/utils/CommonUtils/fixNumber.test.ts +0 -20
- package/__tests__/utils/CommonUtils/formatMileage.test.ts +0 -8
- package/__tests__/utils/CommonUtils/getChipFilterValue.test.ts +0 -22
- package/__tests__/utils/CommonUtils/getFormattedNumber.test.ts +0 -19
- package/__tests__/utils/CommonUtils/getFormattedPrice.test.ts +0 -19
- package/__tests__/utils/CommonUtils/getGroupValuesForQuery.test.ts +0 -51
- package/__tests__/utils/CommonUtils/getOfferSliders.test.ts +0 -64
- package/__tests__/utils/CommonUtils/getPriceRating.test.ts +0 -26
- package/__tests__/utils/CommonUtils/getPriceRatingConfig.test.ts +0 -33
- package/__tests__/utils/CommonUtils/preloadNearbyImages.test.ts +0 -9
- package/__tests__/utils/CommonUtils/sliceLessThan.test.ts +0 -23
- package/__tests__/utils/CommonUtils/sliceMoreThan.test.ts +0 -23
- package/package.json.bak +0 -118
- package/source/components/AdvantageItem/AdvantageItem.story.js +0 -23
- package/source/components/Alternative/Dealer.story.js +0 -32
- package/source/components/Alternative/Dealer.story.styl +0 -3
- package/source/components/Breadcrumbs/Breadcrumbs.story.js +0 -40
- package/source/components/Breadcrumbs/FirstInfoBlock/FirstInfoBlock.story.js +0 -45
- package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.js +0 -243
- package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.styl +0 -21
- package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.js +0 -105
- package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.styl +0 -37
- package/source/components/Checkout/Switcher/Switcher.story.js +0 -41
- package/source/components/Checkout/Switcher/Switcher.story.styl +0 -2
- package/source/components/CompactSearchWidget/CompactSearchWidget.story.js +0 -187
- package/source/components/ContactForm/ContactForm.story.js +0 -94
- package/source/components/ContactForm/ContactForm.story.styl +0 -0
- package/source/components/ContactInfo/ContactInfo.story.js +0 -58
- package/source/components/CustomerQuote/CustomerQuote.story.js +0 -41
- package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.js +0 -73
- package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.styl +0 -5
- package/source/components/FormattedNumber/FormattedNumber.story.js +0 -114
- package/source/components/InfoBlocks/InfoBlockWrapper.story.js +0 -101
- package/source/components/InfoBlocks/InfoBlockWrapper.story.styl +0 -46
- package/source/components/OfferPanel/AboAccordion/AboFaq/AboFaq.story.js +0 -97
- package/source/components/OfferPanel/OfferPanel.story.js +0 -139
- package/source/components/OfferPanel/RangeGroup/RangeGroup.story.js +0 -35
- package/source/components/OfferPanel/RangeGroup/RangeGroup.story.styl +0 -3
- package/source/components/PriceRating/PriceRating.story.js +0 -39
- package/source/components/PriceRating/PriceRating.story.styl +0 -2
- package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.js +0 -78
- package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.styl +0 -11
- package/source/components/RateSearchValue/RateSearchValue.story.js +0 -78
- package/source/components/RateSearchValue/RateSearchValue.story.styl +0 -2
- package/source/components/RateSearchWidget/RateSearchWidget.story.js +0 -57
- package/source/components/RateSearchWidget/RateSearchWidget.story.styl +0 -12
- package/source/components/SearchFilters/FiltersFactory.story.js +0 -273
- package/source/components/SearchPage/Filters/MakeModel/MakeModel.story.js +0 -12
- package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.js +0 -834
- package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.styl +0 -40
- package/source/components/SearchWidget/SearchWidget.story.js +0 -191
- package/source/components/SearchWidget/SearchWidget.story.styl +0 -6
- package/source/components/Stepper/Stepper.story.js +0 -119
- package/source/components/Stepper/Stepper.story.styl +0 -41
- package/source/components/Theme.story.js +0 -36
- package/source/components/Theme.story.styl +0 -85
- package/source/components/TickerText/TickerText.story.js +0 -17
- package/source/components/UserDashboardPage/sections/OrderStatusSection/OrderStatusSection.story.js +0 -95
- package/source/components/UserDashboardPage/sections/RequestedCarsSection/RequestedCarsSection.story.js +0 -97
- package/source/components/Vehicle/VehicleConsumption/VehicleConsumption.story.js +0 -31
- package/source/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.story.js +0 -247
- package/source/components/VehicleCompared/CompareGeneral/CompareGeneral.story.js +0 -30
- package/source/components/VehicleCompared/ComparePrice/ComparePrice.story.js +0 -18
- package/source/components/VehicleCompared/CompareTitle/CompareTitle.story.js +0 -19
- package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.story.js +0 -44
- package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.story.js +0 -120
- package/source/components/VehiclePromoSlider/VehiclePromoInfo/VehiclePromoInfo.story.js +0 -42
- package/source/components/VehiclePromoSlider/VehiclePromoSlide/VehiclePromoSlide.story.js +0 -62
- package/source/components/VehiclePromoSlider/VehiclePromoSlider.story.js +0 -42
- package/source/components/VehicleSmallCard/VehicleSmallCard.story.js +0 -412
- package/source/components/VehicleSmallCard/VehicleSmallCard.story.styl +0 -56
- package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.js +0 -199
- package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.styl +0 -40
- package/source/components/_common/Accordion/Accordion.story.js +0 -36
- package/source/components/_common/Badge/Badge.story.js +0 -27
- package/source/components/_common/Badge/Badge.story.styl +0 -5
- package/source/components/_common/Bubble/Bubble.story.js +0 -52
- package/source/components/_common/Button/Button.story.js +0 -52
- package/source/components/_common/Button/Button.story.styl +0 -5
- package/source/components/_common/ButtonOld/Button.story.js +0 -54
- package/source/components/_common/ButtonOld/Button.story.styl +0 -5
- package/source/components/_common/Checkbox/Checkbox.story.js +0 -85
- package/source/components/_common/Checkbox/Checkbox.story.styl +0 -14
- package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.js +0 -126
- package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.styl +0 -14
- package/source/components/_common/Chip/Chip.story.js +0 -43
- package/source/components/_common/ChipList/ChipList.story.js +0 -36
- package/source/components/_common/DropDown/DropDown.story.js +0 -35
- package/source/components/_common/ExpandablePanel/ExpandablePanel.story.js +0 -41
- package/source/components/_common/Histogram/Histogram.story.js +0 -51
- package/source/components/_common/IconSVG/IconSVG.story.js +0 -21
- package/source/components/_common/IconSVG/IconSVG.story.styl +0 -25
- package/source/components/_common/Image/Image.story.js +0 -142
- package/source/components/_common/Image/Image.story.styl +0 -18
- package/source/components/_common/ImagesSet/ImagesSet.story.js +0 -34
- package/source/components/_common/ImagesSet/ImagesSet.story.styl +0 -4
- package/source/components/_common/Loader/Loader.story.js +0 -21
- package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.story.js +0 -49
- package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.js +0 -45
- package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.styl +0 -6
- package/source/components/_common/MaterialField/MaterialField.story.js +0 -87
- package/source/components/_common/MaterialField/MaterialField.story.styl +0 -34
- package/source/components/_common/MaterialSelect/MaterialSelect.story.js +0 -52
- package/source/components/_common/MaterialSelect/MaterialSelect.story.styl +0 -6
- package/source/components/_common/MaterialStepButton/MaterialStepButton.story.js +0 -47
- package/source/components/_common/MaterialStepButton/MaterialStepButton.story.styl +0 -6
- package/source/components/_common/MaterialSwitch/MaterialSwitch.story.js +0 -17
- package/source/components/_common/MaterialTooltip/MaterialTooltip.story.js +0 -10
- package/source/components/_common/Modal/Modal.story.js +0 -37
- package/source/components/_common/MuiGroupedSelect/MuiGroupedSelect.story.js +0 -21
- package/source/components/_common/PropertySelector/PSGroup.story.js +0 -93
- package/source/components/_common/PropertySelector/PSGroup.story.styl +0 -25
- package/source/components/_common/PropertySelector/ProperySelector.story.js +0 -83
- package/source/components/_common/Radio/FormRadioGroup.story.js +0 -28
- package/source/components/_common/Radio/FormRadioGroup.story.styl +0 -2
- package/source/components/_common/Radio/Radio.story.js +0 -54
- package/source/components/_common/Radio/RadioGroup.story.js +0 -90
- package/source/components/_common/Radio/RadioGroup.story.styl +0 -39
- package/source/components/_common/Range/Range.story.js +0 -46
- package/source/components/_common/Range/Range.story.styl +0 -5
- package/source/components/_common/SliderArrow/SliderArrow.story.js +0 -18
- package/source/components/_common/Tabs/Tabs.story.js +0 -56
- package/source/components/_common/TimePicker/TimePicker.story.js +0 -37
- package/source/components/_common/Tooltip/Tooltip.story.js +0 -28
- package/source/components/_common/UserMenu/MaterialMenu.story.js +0 -73
- package/source/components/_common/VehicleSlider/VehicleSlider.story.js +0 -99
- package/source/components/_common/VehicleSlider/VehicleSlider.story.styl +0 -0
- package/source/components/_common/withLabel/withLabel.story.js +0 -62
- package/source/components/_common/withPopover/withPopover.story.js +0 -48
- package/source/components/_common/withPopover/withPopover.story.styl +0 -54
- package/source/components/_common/withStats/withStats.story.js +0 -75
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"consumptionCombined": "{{consumptionCombined}}l/100km (komb)*",
|
|
3
3
|
"co2": "{{co2}}g CO2/km (komb)*",
|
|
4
|
-
"co2Class": "CO2-Klasse {{class}} (komb)",
|
|
5
4
|
"weDeliverMagdeburg": "Wir liefern Ihr Auto zu Ihnen nach Magdeburg!",
|
|
6
5
|
"weDeliverToYou": "Wir liefern Ihr Auto zu Ihnen!",
|
|
7
6
|
"withoutDeposit": "ohne Anzahlung",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"consumptionCombined": "{{consumptionCombined}}/100km (comb)*",
|
|
3
3
|
"co2": "{{co2}}g CO2/km (comb)*",
|
|
4
|
-
"co2Class": "CO2-class {{class}} (comb)",
|
|
5
4
|
"weDeliverMagdeburg": "We will deliver your car to Magdeburg!",
|
|
6
5
|
"weDeliverToYou": "We deliver your car to you!",
|
|
7
6
|
"withoutDeposit": "Without Deposit",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bytebrand/fe-ui-core",
|
|
3
|
-
"version": "4.8.
|
|
3
|
+
"version": "4.8.110",
|
|
4
4
|
"description": "UI components for the auto.de project",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"module": "dist/common.js",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"@babel/preset-typescript": "^7.21.0",
|
|
15
15
|
"@bytebrand/car-schema-selectors": "^2.0.7",
|
|
16
16
|
"@bytebrand/fe-histoslider": "3.0.0",
|
|
17
|
-
"@bytebrand/i18n-dictionaries": "^
|
|
17
|
+
"@bytebrand/i18n-dictionaries": "^1.5.2",
|
|
18
18
|
"@emotion/react": "^11.9.3",
|
|
19
19
|
"@emotion/styled": "^11.9.3",
|
|
20
20
|
"@mui/material": "^5.9.0",
|
|
@@ -104,7 +104,9 @@
|
|
|
104
104
|
"@types/react": "^16.8.3"
|
|
105
105
|
},
|
|
106
106
|
"scripts": {
|
|
107
|
-
"
|
|
107
|
+
"build": "true",
|
|
108
|
+
"prepublishOnly": "npm run build",
|
|
109
|
+
"prepare": "npm run build",
|
|
108
110
|
"storybook": "start-storybook -p 6006",
|
|
109
111
|
"clean": "rm -rf ./dist/*.*",
|
|
110
112
|
"build:lib": "yarn clean && webpack --config ./webpack.config.js --progress",
|
|
@@ -191,7 +191,6 @@
|
|
|
191
191
|
height: 45px
|
|
192
192
|
border-bottom 1px solid $grey-e
|
|
193
193
|
text-transform: none
|
|
194
|
-
font-size: 11px
|
|
195
194
|
|
|
196
195
|
+media-tablet-landscape-down()
|
|
197
196
|
padding-top: 7px;
|
|
@@ -200,20 +199,9 @@
|
|
|
200
199
|
color: rgba(0,0,0,.63);
|
|
201
200
|
word-break: break-word;
|
|
202
201
|
|
|
203
|
-
// ADV-88: consumption/CO2 line spans the full overview grid width on its own row.
|
|
204
|
-
.accordionVehiclePropFull
|
|
205
|
-
grid-column: 1 / -1
|
|
206
|
-
height: auto
|
|
207
|
-
align-items: flex-start
|
|
208
|
-
line-height: 1.45
|
|
209
|
-
padding: 10px 7.5px
|
|
210
|
-
span
|
|
211
|
-
font-size: 10px
|
|
212
|
-
word-break: break-word
|
|
213
|
-
|
|
214
202
|
.propertyIcon
|
|
215
203
|
flex-shrink: 0;
|
|
216
|
-
|
|
204
|
+
|
|
217
205
|
.longTitle
|
|
218
206
|
max-width: 157px
|
|
219
207
|
|
|
@@ -31,16 +31,13 @@ class AccordionWidget extends React.Component<IAccardionSectionProps> {
|
|
|
31
31
|
return (
|
|
32
32
|
<div className={styles.propertyContainer}>
|
|
33
33
|
{data.map((prop, i) => {
|
|
34
|
-
// ADV-88: the consumption/CO2 line is long for (plug-in) hybrids — let it span the
|
|
35
|
-
// full grid width on its own row instead of being squeezed into one fixed-height cell.
|
|
36
|
-
const isFullWidth = (prop as any).fullWidth;
|
|
37
34
|
return (
|
|
38
35
|
<VehicleProperty
|
|
39
36
|
key={i}
|
|
40
37
|
description={prop.description}
|
|
41
38
|
classNameIcon={styles.propertyIcon}
|
|
42
|
-
icon={prop.icon
|
|
43
|
-
className={
|
|
39
|
+
icon={prop.icon || 'no-image'}
|
|
40
|
+
className={styles.accordionVehicleProp}
|
|
44
41
|
/>
|
|
45
42
|
);
|
|
46
43
|
})}
|
|
@@ -48,42 +45,14 @@ class AccordionWidget extends React.Component<IAccardionSectionProps> {
|
|
|
48
45
|
);
|
|
49
46
|
};
|
|
50
47
|
|
|
51
|
-
// ADV-70: in the "Vehicle Details" section completely hide a spec row when its value is
|
|
52
|
-
// "N/A", a zero ("0 mm", "0 kWh", "0 g CO2/km", ...), null or empty. The Overview section
|
|
53
|
-
// keeps "N/A" and is rendered separately (renderOverview/renderPropsBlock), so it is unaffected.
|
|
54
|
-
isHiddenSpecValue = (value: any): boolean => {
|
|
55
|
-
if (value === null || value === undefined) return true;
|
|
56
|
-
if (typeof value !== 'string') return false; // JSX / non-string content → always keep
|
|
57
|
-
const trimmed = value.trim();
|
|
58
|
-
if (trimmed === '' || trimmed === this.props.t('vehicleProps:value.na')) return true;
|
|
59
|
-
// Detect a zero numeric value regardless of unit/locale: de-DE uses "." as thousands
|
|
60
|
-
// separator and "," as decimal. Only a leading-zero magnitude normalises to exactly 0,
|
|
61
|
-
// so non-zero values (incl. codes like HSN "0588") are never hidden by mistake.
|
|
62
|
-
const numeric = parseFloat(trimmed.replace(/\./g, '').replace(',', '.'));
|
|
63
|
-
return numeric === 0;
|
|
64
|
-
};
|
|
65
|
-
|
|
66
48
|
renderTable = (decoratedProps: IDecoratedProps, propsList: string[] = [], header: string): React.ReactNode => {
|
|
67
|
-
const visibleProps = propsList.filter((prop) => {
|
|
68
|
-
const decoratedProp = decoratedProps[prop];
|
|
69
|
-
if (!decoratedProp) return false;
|
|
70
|
-
const { value, isVisible = true } = decoratedProp;
|
|
71
|
-
// ADV-70 exception: the CO2 emission fields must ALWAYS be shown — even when 0 — because
|
|
72
|
-
// 0 g CO2/km is a real, legally-relevant value, so they bypass the N/A/0 hide rule.
|
|
73
|
-
// NOTE: the environment table's prop key is 'c02' (with a ZERO, see vehicleDetails.ts), not 'co2'.
|
|
74
|
-
const alwaysShow = prop === 'co2' || prop === 'c02' || prop === 'wltpCo2';
|
|
75
|
-
return isVisible && (alwaysShow || !this.isHiddenSpecValue(value));
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
if (visibleProps.length === 0) return null;
|
|
79
|
-
|
|
80
49
|
return (
|
|
81
50
|
<>
|
|
82
51
|
<div className={styles.table}>
|
|
83
52
|
<h3 className={styles.tableName}>{header}</h3>
|
|
84
|
-
{
|
|
85
|
-
const { title, subTitle, value, isLongTitle = false, valueDescription = '' } = decoratedProps[prop];
|
|
86
|
-
return (
|
|
53
|
+
{propsList.map((prop, i) => {
|
|
54
|
+
const { title, subTitle, value, isVisible = true, isLongTitle = false, valueDescription = '' } = decoratedProps[prop];
|
|
55
|
+
return isVisible && (
|
|
87
56
|
<div key={i} className={title ? styles.tr : ''}>
|
|
88
57
|
{title && <div className={classnames(styles.th, isLongTitle ? styles.longTitle : '')}>
|
|
89
58
|
<span className={styles.title}>{title}</span>
|
|
@@ -131,20 +100,10 @@ class AccordionWidget extends React.Component<IAccardionSectionProps> {
|
|
|
131
100
|
const { car } = this.props;
|
|
132
101
|
const autoDeId = car.metaData && car.metaData.vehicleId;
|
|
133
102
|
const { consumption } = car;
|
|
134
|
-
// ADV-88: ANY plug-in hybrid (new or used) gets the long weighted+discharged line and the
|
|
135
|
-
// full-width treatment. Gated on hybridPlugin only, no condition check.
|
|
136
|
-
// ADV-88: "is a hybrid car" is determined by fuel type (hybrid electric + diesel/petrol), not hybridPlugin.
|
|
137
|
-
const isPluginHybrid = consumption.fuel === 'selector_fuel_hybridElectricalDiesel'
|
|
138
|
-
|| consumption.fuel === 'selector_fuel_hybridElectricalPetrol';
|
|
139
103
|
const mainPropertiesList = getOverviewDetails(consumption.fuel);
|
|
140
|
-
const mainProperties = mainPropertiesList.map((prop: string) =>
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
icon: isConsumptionAlternateView ? '' : this.props.decoratedProps[prop].icon,
|
|
144
|
-
description: this.props.decoratedProps[prop].value,
|
|
145
|
-
fullWidth: isConsumptionAlternateView && isPluginHybrid
|
|
146
|
-
};
|
|
147
|
-
});
|
|
104
|
+
const mainProperties = mainPropertiesList.map((prop: string) => (
|
|
105
|
+
{ icon: this.props.decoratedProps[prop].icon, description: this.props.decoratedProps[prop].value })
|
|
106
|
+
);
|
|
148
107
|
return (
|
|
149
108
|
<div>
|
|
150
109
|
{this.renderPropsBlock(mainProperties)}
|
|
@@ -21,7 +21,7 @@ export interface ICheckboxProps {
|
|
|
21
21
|
checkboxClassName?: string;
|
|
22
22
|
labelClassName?: string;
|
|
23
23
|
labelPlacement?: 'end' | 'start' | 'top' | 'bottom';
|
|
24
|
-
tooltipDescription?:
|
|
24
|
+
tooltipDescription?: string;
|
|
25
25
|
checkboxPriceValue: any;
|
|
26
26
|
tooltipPosX?: string;
|
|
27
27
|
error?: boolean;
|
|
@@ -128,7 +128,7 @@ class CheckboxContainer extends React.Component<ICheckboxProps, {}> {
|
|
|
128
128
|
{description ? (
|
|
129
129
|
<span className={styles.labelContent}>
|
|
130
130
|
{description}
|
|
131
|
-
{tooltipDescription && <MaterialTooltip zindex={10000}
|
|
131
|
+
{tooltipDescription && <MaterialTooltip zindex={10000} text={tooltipDescription} className={styles.tooltipCheckbox} icon='InfoTransparent' />}
|
|
132
132
|
</span>
|
|
133
133
|
) : false}
|
|
134
134
|
</label>
|
|
@@ -111,30 +111,6 @@
|
|
|
111
111
|
max-height: inherit;
|
|
112
112
|
width: inherit !important
|
|
113
113
|
|
|
114
|
-
:global
|
|
115
|
-
.MuiTooltip-tooltip
|
|
116
|
-
max-width: 360px !important
|
|
117
|
-
font-size: 11px
|
|
118
|
-
line-height: 1.45
|
|
119
|
-
color: #4C4E64AD
|
|
120
|
-
text-align: left
|
|
121
|
-
|
|
122
|
-
b
|
|
123
|
-
display: block
|
|
124
|
-
margin-bottom: 6px
|
|
125
|
-
font-size: 12px
|
|
126
|
-
color: #1a1a1a
|
|
127
|
-
|
|
128
|
-
p
|
|
129
|
-
margin: 0 0 6px
|
|
130
|
-
|
|
131
|
-
ul
|
|
132
|
-
margin: 4px 0 0
|
|
133
|
-
padding-left: 16px
|
|
134
|
-
|
|
135
|
-
li
|
|
136
|
-
margin-bottom: 3px
|
|
137
|
-
|
|
138
114
|
.checkboxPrice
|
|
139
115
|
align-self: center;
|
|
140
116
|
color: rgba(#000000, .63);
|
|
@@ -11,11 +11,12 @@ interface IOfferPeriod {
|
|
|
11
11
|
transferInstallments?: any;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const OfferCheckboxGroup: FC<IOfferPeriod> = ({ additionalService, isAboAccordionExpanded0 = true, priceTabIndex }) => {
|
|
14
|
+
const OfferCheckboxGroup: FC<IOfferPeriod> = ({ additionalService, transferInstallments, isAboAccordionExpanded0 = true, priceTabIndex }) => {
|
|
15
15
|
const offerGroupClass = classNames(styles.checkboxWrapped, { [styles.checkBoxGroup]: priceTabIndex !== THREE });
|
|
16
16
|
return (
|
|
17
17
|
<div className={offerGroupClass}>
|
|
18
18
|
{isAboAccordionExpanded0 && <CheckboxContainer {...additionalService } />}
|
|
19
|
+
<CheckboxContainer {...{ ...transferInstallments, isAboAccordionExpanded0 }} />
|
|
19
20
|
</div>
|
|
20
21
|
);
|
|
21
22
|
};
|
|
@@ -71,7 +71,7 @@ const OfferPanel: FC<IFinancingPanel> = ({
|
|
|
71
71
|
|
|
72
72
|
{priceTabIndex === THREE
|
|
73
73
|
? <div className={styles.aboAccordionWrapper}><AboAccordion /></div>
|
|
74
|
-
: <div className={styles.offerCheckboxGroup}><OfferCheckboxGroup {...{ transferInstallments, additionalService
|
|
74
|
+
: <div className={styles.offerCheckboxGroup}><OfferCheckboxGroup {...{ transferInstallments, additionalService }} /></div>}
|
|
75
75
|
</>
|
|
76
76
|
}
|
|
77
77
|
</form>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect,
|
|
1
|
+
import React, { useState, useEffect, FunctionComponent } from 'react';
|
|
2
2
|
import _get from 'lodash/get';
|
|
3
3
|
import { Hidden } from 'react-grid-system';
|
|
4
4
|
import PriceContent from './partials/PriceContent';
|
|
@@ -104,31 +104,19 @@ const VehicleDetailedSidebar: FunctionComponent<IVehicleDetailedSidebarProps> =
|
|
|
104
104
|
}
|
|
105
105
|
];
|
|
106
106
|
|
|
107
|
-
const initialDefaultAppliedForPath = useRef<string | null>(null);
|
|
108
|
-
|
|
109
107
|
useEffect(() => {
|
|
110
108
|
const getlocalStorageActiveTabCDP = localStorage.getItem('activeTabCDP');
|
|
111
|
-
if (getlocalStorageActiveTabCDP)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
localStorage.removeItem('activeTabCDP');
|
|
121
|
-
initialDefaultAppliedForPath.current = pathname;
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
if (
|
|
125
|
-
initialDefaultAppliedForPath.current !== pathname
|
|
126
|
-
&& _get(price, 'leasing.isActive', false)
|
|
127
|
-
) {
|
|
128
|
-
setActiveTab(null, 1);
|
|
129
|
-
initialDefaultAppliedForPath.current = pathname;
|
|
109
|
+
if (!getlocalStorageActiveTabCDP) return;
|
|
110
|
+
const activeTab = tabsTitles.findIndex(({ title }: { title: string }) => {
|
|
111
|
+
return title === getlocalStorageActiveTabCDP;
|
|
112
|
+
});
|
|
113
|
+
if (activeTab === -1) {
|
|
114
|
+
setActiveTab(null, 0);
|
|
115
|
+
} else {
|
|
116
|
+
setActiveTab(null, activeTab);
|
|
130
117
|
}
|
|
131
|
-
|
|
118
|
+
localStorage.removeItem('activeTabCDP');
|
|
119
|
+
}, [pathname, activeTab]); // tslint:disable-line:align
|
|
132
120
|
|
|
133
121
|
const priceProps = {
|
|
134
122
|
tabsTitles,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import classNames from 'classnames';
|
|
3
2
|
import _get from 'lodash/get';
|
|
4
3
|
import { IPropertiesProps, ICarPropElement } from '../../../framework/types/types';
|
|
5
4
|
import { getActualHighlights } from '../../../framework/constants/highlights';
|
|
@@ -41,19 +40,18 @@ const Properties: React.FunctionComponent<IPropertiesProps> = ({ t, car, decorat
|
|
|
41
40
|
: <div className={styles.empty}>{t(`sidebar.empty`)}</div>;
|
|
42
41
|
};
|
|
43
42
|
|
|
44
|
-
// ADV-70: hide a spec line whose value is "N/A", a zero ("0 mm", "0 kWh", "0 g CO2/km", ...),
|
|
45
|
-
// null or empty — mirrors AccordionWidget.isHiddenSpecValue. de-DE thousands "." / decimal ","
|
|
46
|
-
// are normalised so only a true zero magnitude hides; codes like HSN "0588" stay visible.
|
|
47
|
-
const isHiddenSpecValue = (value: any): boolean => {
|
|
48
|
-
if (value === null || value === undefined) return true;
|
|
49
|
-
if (typeof value !== 'string') return false; // JSX / non-string content → always keep
|
|
50
|
-
const trimmed = value.trim();
|
|
51
|
-
if (trimmed === '' || trimmed === t('vehicleProps:value.na')) return true;
|
|
52
|
-
const numeric = parseFloat(trimmed.replace(/\./g, '').replace(',', '.'));
|
|
53
|
-
return numeric === 0;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
43
|
const renderDetails = (): React.ReactNode => {
|
|
44
|
+
const sectionNames = [
|
|
45
|
+
t(`sidebar.dataEngine`),
|
|
46
|
+
t(`sidebar.dimensions`),
|
|
47
|
+
t(`sidebar.generalData`),
|
|
48
|
+
t(`sidebar.equipments`)
|
|
49
|
+
];
|
|
50
|
+
const detailPropertiesList = ['cubicCapacity', 'torque', 'length', 'width', 'doors', 'fuel'];
|
|
51
|
+
const detailProperties = detailPropertiesList.map(
|
|
52
|
+
(prop: string) => (`${decoratedProps[prop].title}: ${decoratedProps[prop].value}`)
|
|
53
|
+
);
|
|
54
|
+
|
|
57
55
|
const equipmentsObj = {
|
|
58
56
|
...addPrefixToKeys(car.lights, 'lights'),
|
|
59
57
|
...addPrefixToKeys(car.multimedia, 'multimedia'),
|
|
@@ -65,41 +63,14 @@ const Properties: React.FunctionComponent<IPropertiesProps> = ({ t, car, decorat
|
|
|
65
63
|
.slice(0, 2)
|
|
66
64
|
.map(prop => t(`cbd:${prop}`));
|
|
67
65
|
|
|
68
|
-
|
|
69
|
-
// all its lines (e.g. "Maße & Abmessungen" when length+width are both N/A) is removed and
|
|
70
|
-
// the next section flows up so there is no gap in the 2-column grid.
|
|
71
|
-
const sectionsConfig: Array<{ title: string; props?: string[]; lines?: string[] }> = [
|
|
72
|
-
{ title: t(`sidebar.dataEngine`), props: ['cubicCapacity', 'torque'] },
|
|
73
|
-
{ title: t(`sidebar.dimensions`), props: ['length', 'width'] },
|
|
74
|
-
{ title: t(`sidebar.generalData`), props: ['doors', 'fuel'] },
|
|
75
|
-
{ title: t(`sidebar.equipments`), lines: equipmentsArr.length ? [equipmentsArr.join(', ')] : [] }
|
|
76
|
-
];
|
|
77
|
-
|
|
78
|
-
const visibleSections = sectionsConfig
|
|
79
|
-
.map(({ title, props, lines }) => ({
|
|
80
|
-
title,
|
|
81
|
-
lines: props
|
|
82
|
-
? props
|
|
83
|
-
.filter(prop => decoratedProps[prop] && !isHiddenSpecValue(decoratedProps[prop].value))
|
|
84
|
-
.map(prop => `${decoratedProps[prop].title}: ${decoratedProps[prop].value}`)
|
|
85
|
-
: (lines || [])
|
|
86
|
-
}))
|
|
87
|
-
.filter(section => section.lines.length > 0);
|
|
88
|
-
|
|
89
|
-
if (!visibleSections.length) return null;
|
|
90
|
-
|
|
91
|
-
// Class by VISIBLE position, not original index: the first two sections form the top row
|
|
92
|
-
// (detailsItemFirstLine — padding-top 7px), the rest the bottom row (detailsItemLastLine —
|
|
93
|
-
// padding-top 20px). So a section promoted into the top row drops its 20px top padding,
|
|
94
|
-
// while a section that stays in the bottom row keeps it.
|
|
66
|
+
detailProperties.push(equipmentsArr.join(', '));
|
|
95
67
|
return (
|
|
96
68
|
<div className={styles.details}>
|
|
97
|
-
{
|
|
69
|
+
{sectionNames.map((title, i) => (
|
|
98
70
|
<div key={i} className={i > 1 ? styles.detailsItemLastLine : styles.detailsItemFirstLine}>
|
|
99
71
|
<h4 className={styles.detailsTitle}>{title}</h4>
|
|
100
|
-
{
|
|
101
|
-
|
|
102
|
-
))}
|
|
72
|
+
<span className={styles.detailsContent}>{detailProperties[0 + i * 2]}</span>
|
|
73
|
+
<span className={styles.detailsContent}>{detailProperties[1 + i * 2]}</span>
|
|
103
74
|
</div>
|
|
104
75
|
))}
|
|
105
76
|
</div>
|
|
@@ -107,24 +78,15 @@ const Properties: React.FunctionComponent<IPropertiesProps> = ({ t, car, decorat
|
|
|
107
78
|
};
|
|
108
79
|
|
|
109
80
|
const mainPropertiesList = getOverviewDetails(car.consumption.fuel);
|
|
110
|
-
|
|
111
|
-
// row (and drop the fuel icon) instead of being squeezed into one 50% column.
|
|
112
|
-
const mainProperties = mainPropertiesList.map((prop: string) => {
|
|
113
|
-
const isConsumptionAlternateView = prop.startsWith('consumption') && prop.endsWith('AlternateView');
|
|
114
|
-
return {
|
|
115
|
-
icon: isConsumptionAlternateView ? '' : decoratedProps[prop].icon,
|
|
116
|
-
description: decoratedProps[prop].value,
|
|
117
|
-
fullWidth: isConsumptionAlternateView
|
|
118
|
-
};
|
|
119
|
-
});
|
|
81
|
+
const mainProperties = mainPropertiesList.map((prop: string) => ({ icon: decoratedProps[prop].icon, description: decoratedProps[prop].value }));
|
|
120
82
|
|
|
121
83
|
const tabsTitles = [
|
|
122
84
|
{
|
|
123
85
|
title: `${t(`sidebar.overview`)}`,
|
|
124
86
|
children: (
|
|
125
87
|
<div className={`${styles.tabContentPadding} ${styles.tabContentOverviewPadding}`}>
|
|
126
|
-
{mainProperties.map((
|
|
127
|
-
<VehicleProperty {...property} className={
|
|
88
|
+
{mainProperties.map((property: any, index: number) => (
|
|
89
|
+
<VehicleProperty {...property} className={styles.property} key={index} />
|
|
128
90
|
))}
|
|
129
91
|
</div>
|
|
130
92
|
)
|
|
@@ -46,6 +46,8 @@ interface IProps {
|
|
|
46
46
|
showDownPayment: boolean;
|
|
47
47
|
financingFirstInstallment?: number | null;
|
|
48
48
|
leasingFirstInstallment?: number | null;
|
|
49
|
+
sliderFinancingFirstInstallment?: number | null;
|
|
50
|
+
sliderLeasingFirstInstallment?: number | null;
|
|
49
51
|
handleSentryInit?: () => void;
|
|
50
52
|
}
|
|
51
53
|
|
|
@@ -312,11 +314,12 @@ class VehicleDetailedSlider extends Component<IProps, IState> {
|
|
|
312
314
|
showDownPayment,
|
|
313
315
|
financingFirstInstallment,
|
|
314
316
|
leasingFirstInstallment,
|
|
317
|
+
sliderFinancingFirstInstallment,
|
|
318
|
+
sliderLeasingFirstInstallment,
|
|
315
319
|
subModel,
|
|
316
320
|
powerKW,
|
|
317
321
|
powerPS,
|
|
318
322
|
activeTab,
|
|
319
|
-
financingConfig,
|
|
320
323
|
onCarFavorite
|
|
321
324
|
} = this.props;
|
|
322
325
|
const { activeSlide } = this.state;
|
|
@@ -338,11 +341,12 @@ class VehicleDetailedSlider extends Component<IProps, IState> {
|
|
|
338
341
|
|
|
339
342
|
const priceProps = {
|
|
340
343
|
t,
|
|
341
|
-
financingConfig,
|
|
342
344
|
showNewLabel,
|
|
343
345
|
showDownPayment,
|
|
344
346
|
financingFirstInstallment,
|
|
345
347
|
leasingFirstInstallment,
|
|
348
|
+
sliderFinancingFirstInstallment,
|
|
349
|
+
sliderLeasingFirstInstallment,
|
|
346
350
|
historyPriceDifference: price ? price.historyPriceDifference : 0,
|
|
347
351
|
historyPriceDifferencePerCent: price ? price.historyPriceDifferencePerCent : 0,
|
|
348
352
|
activeTab
|
package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl
CHANGED
|
@@ -70,11 +70,6 @@
|
|
|
70
70
|
+media-tablet-landscape-up()
|
|
71
71
|
font-size: 9px;
|
|
72
72
|
|
|
73
|
-
&.priceItemCategoryLanding,
|
|
74
|
-
&.priceItemCategoryMain
|
|
75
|
-
+media-tablet-landscape-up()
|
|
76
|
-
font-size: 10px;
|
|
77
|
-
|
|
78
73
|
& > span:hover
|
|
79
74
|
background: rgba(196, 196, 196, 0.6);
|
|
80
75
|
|
|
@@ -127,43 +122,6 @@
|
|
|
127
122
|
&.priceMtlActive
|
|
128
123
|
transform: translateX(6px);
|
|
129
124
|
|
|
130
|
-
// ADV-70: monthly label rendered before the rate (small, top-left of the number).
|
|
131
|
-
.priceCurrentWrap
|
|
132
|
-
display: inline-flex
|
|
133
|
-
align-items: flex-start
|
|
134
|
-
|
|
135
|
-
.priceMtlPrefix
|
|
136
|
-
font-size: 10px
|
|
137
|
-
line-height: 1.2
|
|
138
|
-
margin-right: 3px
|
|
139
|
-
color: rgba(76, 78, 100, 0.6)
|
|
140
|
-
align-self: flex-start
|
|
141
|
-
white-space: nowrap
|
|
142
|
-
|
|
143
|
-
// ADV-88 (Marco): the monthly "mtl."/"mth." label sits INLINE to the LEFT of the rate (top-
|
|
144
|
-
// aligned), not stacked above. NOTE: on the narrowest 4-up landing/main card (~256px) the
|
|
145
|
-
// inline label can graze the card edge at full font; the wide comparable/CDP card fits with
|
|
146
|
-
// room. (Marco asked to keep the rate/category fonts untouched — only the label moved.)
|
|
147
|
-
.priceItemComparable
|
|
148
|
-
.priceCurrentWrap
|
|
149
|
-
flex-direction: row
|
|
150
|
-
align-items: flex-start
|
|
151
|
-
.priceMtlPrefix
|
|
152
|
-
font-size: 8px
|
|
153
|
-
line-height: 1
|
|
154
|
-
margin-right: 2px
|
|
155
|
-
align-self: flex-start
|
|
156
|
-
|
|
157
|
-
// landing (/angebot): on desktop the cards are a narrow 4-up grid where the inline label would
|
|
158
|
-
// overflow the price column — stack "mtl."/"mth." above the rate there (mobile stays inline above).
|
|
159
|
-
.priceItemLanding
|
|
160
|
-
+media-tablet-landscape-up()
|
|
161
|
-
.priceCurrentWrap
|
|
162
|
-
flex-direction: column
|
|
163
|
-
align-items: flex-end
|
|
164
|
-
.priceMtlPrefix
|
|
165
|
-
margin-right: 0
|
|
166
|
-
|
|
167
125
|
.priceNewBlock
|
|
168
126
|
flex-shrink: 0;
|
|
169
127
|
width: 18px
|
package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx
CHANGED
|
@@ -39,10 +39,7 @@ export interface IVehiclePriceItemProps {
|
|
|
39
39
|
isMarge?: boolean;
|
|
40
40
|
}
|
|
41
41
|
class VehiclePriceItem extends React.Component<IVehiclePriceItemProps> {
|
|
42
|
-
routeToActiveTab = () => {
|
|
43
|
-
const { priceTitle } = this.props;
|
|
44
|
-
localStorage.setItem('activeTabCDP', priceTitle);
|
|
45
|
-
}
|
|
42
|
+
routeToActiveTab = () => {}
|
|
46
43
|
|
|
47
44
|
render(): React.ReactNode {
|
|
48
45
|
const {
|
|
@@ -81,9 +78,6 @@ class VehiclePriceItem extends React.Component<IVehiclePriceItemProps> {
|
|
|
81
78
|
{ [styles.priceItemSearch]: vehicleComponentName === 'search' },
|
|
82
79
|
{ [styles.priceItemRecently]: vehicleComponentName === 'recently' },
|
|
83
80
|
{ [styles.priceItemComparable]: vehicleComponentName === 'comparable' || vehicleComponentName === 'landing' || vehicleComponentName === 'main' },
|
|
84
|
-
// landing (/angebot) cards are a narrow 4-up grid on desktop where the inline monthly
|
|
85
|
-
// label would overflow — keep it stacked there, inline only on the wide single-column mobile.
|
|
86
|
-
{ [styles.priceItemLanding]: vehicleComponentName === 'landing' },
|
|
87
81
|
{ [styles.priceItemDisable]: isPriceDisable },
|
|
88
82
|
{ [styles.priceItemBuy]: isTotal }
|
|
89
83
|
);
|
|
@@ -91,9 +85,7 @@ class VehiclePriceItem extends React.Component<IVehiclePriceItemProps> {
|
|
|
91
85
|
const priceItemCategoryClassName = classnames(
|
|
92
86
|
styles.priceItemCategory,
|
|
93
87
|
{ [styles.priceItemCategorySearch]: vehicleComponentName === 'search' || vehicleComponentName === 'myVehicles' },
|
|
94
|
-
{ [styles.priceItemCategoryComparable]: vehicleComponentName === 'comparable' }
|
|
95
|
-
{ [styles.priceItemCategoryLanding]: vehicleComponentName === 'landing' },
|
|
96
|
-
{ [styles.priceItemCategoryMain]: vehicleComponentName === 'main' }
|
|
88
|
+
{ [styles.priceItemCategoryComparable]: vehicleComponentName === 'comparable' || vehicleComponentName === 'landing' || vehicleComponentName === 'main' }
|
|
97
89
|
);
|
|
98
90
|
|
|
99
91
|
return (
|
|
@@ -142,19 +134,15 @@ class VehiclePriceItem extends React.Component<IVehiclePriceItemProps> {
|
|
|
142
134
|
)}
|
|
143
135
|
|
|
144
136
|
{perMonthCurrent && (
|
|
145
|
-
<
|
|
146
|
-
{
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
isNew={isStrikeShown}
|
|
155
|
-
size='semimedium'
|
|
156
|
-
/>
|
|
157
|
-
</span>
|
|
137
|
+
<VehicleFormattedPrice
|
|
138
|
+
numbersAfterDot={0}
|
|
139
|
+
price={perMonthCurrent}
|
|
140
|
+
postfix={postfix}
|
|
141
|
+
className={classnames(styles.priceMtl, { [styles.priceMtlActive]: !!priceSub })}
|
|
142
|
+
isNew={isStrikeShown}
|
|
143
|
+
size='semimedium'
|
|
144
|
+
sub={priceSub}
|
|
145
|
+
/>
|
|
158
146
|
)}
|
|
159
147
|
</>
|
|
160
148
|
) : (
|