@bytebrand/fe-ui-core 4.8.54 → 4.8.56
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/.husky/pre-push +4 -0
- package/.storybook/addons.js +4 -0
- package/.storybook/config.js +64 -0
- package/.storybook/postcss.config.js +6 -0
- package/.storybook/preview-head.html +10 -0
- package/.storybook/webpack.config.js +130 -0
- package/__tests__/components/Checkout/OrderOverviewItem/OrderOverviewItem.test.tsx +42 -0
- package/__tests__/components/Checkout/PaymentTypeCard/PaymentTypeCard.test.tsx +50 -0
- package/__tests__/components/Checkout/RadioGroup.test.tsx +95 -0
- package/__tests__/components/Checkout/ServiceCardWrapper.test.tsx +53 -0
- package/__tests__/components/Checkout/Switcher.test.tsx +43 -0
- package/__tests__/components/UserDasboardPage/sections/CheckoutSection/CheckoutSection.test.tsx +613 -0
- package/__tests__/components/UserDasboardPage/sections/FavoriteSection/FavoriteSection.test.tsx +335 -0
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/AdditionalOrderInfo.test.tsx +127 -0
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCar.test.tsx +58 -0
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCard.test.tsx +74 -0
- package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusSection.test.tsx +62 -0
- package/__tests__/components/UserDasboardPage/sections/RequestedCarsSection/RequestedCarsSection.test.tsx +117 -0
- package/__tests__/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.test.tsx +58 -0
- package/__tests__/components/VehicleSmallCard/VehicleInfo.test.tsx +88 -0
- package/__tests__/components/VehicleSmallCard/VehicleTitle.test.tsx +91 -0
- package/__tests__/components/_common/Badge/Badge.test.tsx +15 -0
- package/__tests__/components/_common/IconSVG/IconSVG.test.tsx +23 -0
- package/__tests__/components/_common/Image/Image.test.tsx +82 -0
- package/__tests__/components/_common/MaterialAutocomplete/MaterialAutocomplete.test.tsx +49 -0
- package/__tests__/components/_common/MaterialDatePicker/MaterialDatePicker.test.tsx +54 -0
- package/__tests__/components/_common/MaterialField/MaterialField.test.tsx +58 -0
- package/__tests__/components/_common/StarButton/StarButton.test.tsx +46 -0
- package/__tests__/mockedData/financingConfig.js +202 -0
- package/__tests__/mockedData/mockedPendingRequestedCar.js +69 -0
- package/__tests__/utils/CommonUtils/addPrefixToKeys.test.ts +18 -0
- package/__tests__/utils/CommonUtils/arrToObj.test.js +32 -0
- package/__tests__/utils/CommonUtils/checkRangeValuesOnEqual.test.ts +17 -0
- package/__tests__/utils/CommonUtils/fixNumber.test.ts +20 -0
- package/__tests__/utils/CommonUtils/formatMileage.test.ts +8 -0
- package/__tests__/utils/CommonUtils/getChipFilterValue.test.ts +22 -0
- package/__tests__/utils/CommonUtils/getFormattedNumber.test.ts +19 -0
- package/__tests__/utils/CommonUtils/getFormattedPrice.test.ts +19 -0
- package/__tests__/utils/CommonUtils/getGroupValuesForQuery.test.ts +51 -0
- package/__tests__/utils/CommonUtils/getOfferSliders.test.ts +64 -0
- package/__tests__/utils/CommonUtils/getPriceRating.test.ts +26 -0
- package/__tests__/utils/CommonUtils/getPriceRatingConfig.test.ts +33 -0
- package/__tests__/utils/CommonUtils/preloadNearbyImages.test.ts +9 -0
- package/__tests__/utils/CommonUtils/sliceLessThan.test.ts +23 -0
- package/__tests__/utils/CommonUtils/sliceMoreThan.test.ts +23 -0
- package/media/locales/de/promoSlider.json +1 -0
- package/media/locales/en/promoSlider.json +1 -0
- package/package.json +117 -120
- package/source/components/AccordionWidget/AccordionWidget.styl +1 -0
- package/source/components/AccordionWidget/AccordionWidget.tsx +8 -4
- package/source/components/AdvantageItem/AdvantageItem.story.js +23 -0
- package/source/components/Alternative/Dealer.story.js +32 -0
- package/source/components/Alternative/Dealer.story.styl +3 -0
- package/source/components/Breadcrumbs/Breadcrumbs.story.js +40 -0
- package/source/components/Breadcrumbs/FirstInfoBlock/FirstInfoBlock.story.js +45 -0
- package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.js +243 -0
- package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.styl +21 -0
- package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.js +105 -0
- package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.styl +37 -0
- package/source/components/Checkout/Switcher/Switcher.story.js +41 -0
- package/source/components/Checkout/Switcher/Switcher.story.styl +2 -0
- package/source/components/CompactSearchWidget/CompactSearchWidget.story.js +187 -0
- package/source/components/ContactForm/ContactForm.story.js +94 -0
- package/source/components/ContactForm/ContactForm.story.styl +0 -0
- package/source/components/ContactInfo/ContactInfo.story.js +58 -0
- package/source/components/CustomerQuote/CustomerQuote.story.js +41 -0
- package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.js +73 -0
- package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.styl +5 -0
- package/source/components/FormattedNumber/FormattedNumber.story.js +114 -0
- package/source/components/InfoBlocks/InfoBlockWrapper.story.js +101 -0
- package/source/components/InfoBlocks/InfoBlockWrapper.story.styl +46 -0
- package/source/components/OfferPanel/AboAccordion/AboFaq/AboFaq.story.js +97 -0
- package/source/components/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +2 -2
- package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +24 -0
- package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +1 -2
- package/source/components/OfferPanel/OfferPanel.story.js +139 -0
- package/source/components/OfferPanel/OfferPanel.tsx +1 -1
- package/source/components/OfferPanel/RangeGroup/RangeGroup.story.js +35 -0
- package/source/components/OfferPanel/RangeGroup/RangeGroup.story.styl +3 -0
- package/source/components/PriceRating/PriceRating.story.js +39 -0
- package/source/components/PriceRating/PriceRating.story.styl +2 -0
- package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.js +78 -0
- package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.styl +11 -0
- package/source/components/RateSearchValue/RateSearchValue.story.js +78 -0
- package/source/components/RateSearchValue/RateSearchValue.story.styl +2 -0
- package/source/components/RateSearchWidget/RateSearchWidget.story.js +57 -0
- package/source/components/RateSearchWidget/RateSearchWidget.story.styl +12 -0
- package/source/components/SearchFilters/FiltersFactory.story.js +273 -0
- package/source/components/SearchPage/Filters/MakeModel/MakeModel.story.js +12 -0
- package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.js +834 -0
- package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.styl +40 -0
- package/source/components/SearchWidget/SearchWidget.story.js +191 -0
- package/source/components/SearchWidget/SearchWidget.story.styl +6 -0
- package/source/components/Stepper/Stepper.story.js +119 -0
- package/source/components/Stepper/Stepper.story.styl +41 -0
- package/source/components/Theme.story.js +36 -0
- package/source/components/Theme.story.styl +85 -0
- package/source/components/TickerText/TickerText.story.js +17 -0
- package/source/components/UserDashboardPage/sections/OrderStatusSection/OrderStatusSection.story.js +95 -0
- package/source/components/UserDashboardPage/sections/RequestedCarsSection/RequestedCarsSection.story.js +97 -0
- package/source/components/Vehicle/VehicleConsumption/VehicleConsumption.story.js +31 -0
- package/source/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.story.js +247 -0
- package/source/components/VehicleCompared/CompareGeneral/CompareGeneral.story.js +30 -0
- package/source/components/VehicleCompared/ComparePrice/ComparePrice.story.js +18 -0
- package/source/components/VehicleCompared/CompareTitle/CompareTitle.story.js +19 -0
- package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.story.js +44 -0
- package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +23 -11
- package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.story.js +120 -0
- package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.tsx +2 -0
- package/source/components/VehicleDetailedSlider/partials/PriceData.tsx +7 -4
- package/source/components/VehiclePromoSlider/VehiclePromoInfo/VehiclePromoInfo.story.js +42 -0
- package/source/components/VehiclePromoSlider/VehiclePromoSlide/VehiclePromoSlide.story.js +62 -0
- package/source/components/VehiclePromoSlider/VehiclePromoSlider.story.js +42 -0
- package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +5 -0
- package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +3 -1
- package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +1 -1
- package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +24 -11
- package/source/components/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +3 -2
- package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +4 -1
- package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +3 -2
- package/source/components/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +1 -1
- package/source/components/VehicleSmallCard/VehicleSmallCard.story.js +412 -0
- package/source/components/VehicleSmallCard/VehicleSmallCard.story.styl +56 -0
- package/source/components/VehicleSmallCard/VehicleSmallCard.tsx +14 -3
- package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.js +199 -0
- package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.styl +40 -0
- package/source/components/_common/Accordion/Accordion.story.js +36 -0
- package/source/components/_common/Badge/Badge.story.js +27 -0
- package/source/components/_common/Badge/Badge.story.styl +5 -0
- package/source/components/_common/Bubble/Bubble.story.js +52 -0
- package/source/components/_common/Button/Button.story.js +52 -0
- package/source/components/_common/Button/Button.story.styl +5 -0
- package/source/components/_common/ButtonOld/Button.story.js +54 -0
- package/source/components/_common/ButtonOld/Button.story.styl +5 -0
- package/source/components/_common/Checkbox/Checkbox.story.js +85 -0
- package/source/components/_common/Checkbox/Checkbox.story.styl +14 -0
- package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.js +126 -0
- package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.styl +14 -0
- package/source/components/_common/Chip/Chip.story.js +43 -0
- package/source/components/_common/ChipList/ChipList.story.js +36 -0
- package/source/components/_common/DropDown/DropDown.story.js +35 -0
- package/source/components/_common/ExpandablePanel/ExpandablePanel.story.js +41 -0
- package/source/components/_common/Histogram/Histogram.story.js +51 -0
- package/source/components/_common/IconSVG/IconSVG.story.js +21 -0
- package/source/components/_common/IconSVG/IconSVG.story.styl +25 -0
- package/source/components/_common/Image/Image.story.js +142 -0
- package/source/components/_common/Image/Image.story.styl +18 -0
- package/source/components/_common/ImagesSet/ImagesSet.story.js +34 -0
- package/source/components/_common/ImagesSet/ImagesSet.story.styl +4 -0
- package/source/components/_common/Loader/Loader.story.js +21 -0
- package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.story.js +49 -0
- package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.styled.tsx +4 -1
- package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.js +45 -0
- package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.styl +6 -0
- package/source/components/_common/MaterialField/MaterialField.story.js +87 -0
- package/source/components/_common/MaterialField/MaterialField.story.styl +34 -0
- package/source/components/_common/MaterialSelect/MaterialSelect.story.js +52 -0
- package/source/components/_common/MaterialSelect/MaterialSelect.story.styl +6 -0
- package/source/components/_common/MaterialStepButton/MaterialStepButton.story.js +47 -0
- package/source/components/_common/MaterialStepButton/MaterialStepButton.story.styl +6 -0
- package/source/components/_common/MaterialSwitch/MaterialSwitch.story.js +17 -0
- package/source/components/_common/MaterialTooltip/MaterialTooltip.story.js +10 -0
- package/source/components/_common/MaterialTooltip/MaterialTooltip.tsx +4 -3
- package/source/components/_common/Modal/Modal.story.js +37 -0
- package/source/components/_common/MuiGroupedSelect/MuiGroupedSelect.story.js +21 -0
- package/source/components/_common/PropertySelector/PSGroup.story.js +93 -0
- package/source/components/_common/PropertySelector/PSGroup.story.styl +25 -0
- package/source/components/_common/PropertySelector/ProperySelector.story.js +83 -0
- package/source/components/_common/Radio/FormRadioGroup.story.js +28 -0
- package/source/components/_common/Radio/FormRadioGroup.story.styl +2 -0
- package/source/components/_common/Radio/Radio.story.js +54 -0
- package/source/components/_common/Radio/RadioGroup.story.js +90 -0
- package/source/components/_common/Radio/RadioGroup.story.styl +39 -0
- package/source/components/_common/Range/Range.story.js +46 -0
- package/source/components/_common/Range/Range.story.styl +5 -0
- package/source/components/_common/SliderArrow/SliderArrow.story.js +18 -0
- package/source/components/_common/Tabs/Tabs.story.js +56 -0
- package/source/components/_common/TimePicker/TimePicker.story.js +37 -0
- package/source/components/_common/Tooltip/Tooltip.story.js +28 -0
- package/source/components/_common/UserMenu/MaterialMenu.story.js +73 -0
- package/source/components/_common/VehicleSlider/VehicleSlider.story.js +99 -0
- package/source/components/_common/VehicleSlider/VehicleSlider.story.styl +0 -0
- package/source/components/_common/withLabel/withLabel.story.js +62 -0
- package/source/components/_common/withPopover/withPopover.story.js +48 -0
- package/source/components/_common/withPopover/withPopover.story.styl +54 -0
- package/source/components/_common/withStats/withStats.story.js +75 -0
- package/source/components/_common/withStats/withStats.styl +10 -0
- package/source/components/_common/withStats/withStats.tsx +2 -11
- package/source/framework/DataTransformers.ts +1 -0
- package/source/framework/constants/common.ts +8 -4
- package/source/framework/types/types.ts +1 -0
- package/source/framework/vehiclesProps/decoratedLightProps.tsx +48 -12
- package/source/framework/vehiclesProps/decoratedProps.tsx +35 -8
- package/source/locales/data.ts +3 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import ContactForm from "./ContactForm";
|
|
3
|
+
import { storiesOf } from "@storybook/react";
|
|
4
|
+
import styles from './ContactForm.story.styl';
|
|
5
|
+
|
|
6
|
+
const ContactFormContainer = () => {
|
|
7
|
+
|
|
8
|
+
const [contactFormValues, setContactFormValues] = useState({
|
|
9
|
+
firstName: {
|
|
10
|
+
value: 'firstname',
|
|
11
|
+
type: 'text',
|
|
12
|
+
hasError: 'true',
|
|
13
|
+
error: 'this field is required',
|
|
14
|
+
name: 'firstName'
|
|
15
|
+
},
|
|
16
|
+
lastName: {
|
|
17
|
+
value: 'lastName',
|
|
18
|
+
type: 'text',
|
|
19
|
+
hasError: 'true',
|
|
20
|
+
error: 'this field is required',
|
|
21
|
+
name: 'lastName'
|
|
22
|
+
},
|
|
23
|
+
email: {
|
|
24
|
+
value: 'email',
|
|
25
|
+
type: 'text',
|
|
26
|
+
hasError: 'true',
|
|
27
|
+
error: 'this field is required',
|
|
28
|
+
name: 'email'
|
|
29
|
+
},
|
|
30
|
+
countryCode: {
|
|
31
|
+
value: 'countryCode',
|
|
32
|
+
type: 'text',
|
|
33
|
+
hasError: 'true',
|
|
34
|
+
error: 'this field is required',
|
|
35
|
+
name: 'countryCode',
|
|
36
|
+
extra: [10, 20, 30]
|
|
37
|
+
},
|
|
38
|
+
areaCode: {
|
|
39
|
+
value: 'areaCode',
|
|
40
|
+
type: 'text',
|
|
41
|
+
hasError: 'true',
|
|
42
|
+
error: 'this field is required',
|
|
43
|
+
name: 'areaCode'
|
|
44
|
+
},
|
|
45
|
+
phoneNumber: {
|
|
46
|
+
value: 'phoneNumber',
|
|
47
|
+
type: 'text',
|
|
48
|
+
hasError: 'true',
|
|
49
|
+
error: 'this field is required',
|
|
50
|
+
name: 'phoneNumber'
|
|
51
|
+
},
|
|
52
|
+
message: {
|
|
53
|
+
value: 'message',
|
|
54
|
+
type: 'text',
|
|
55
|
+
hasError: 'true',
|
|
56
|
+
error: 'this field is required',
|
|
57
|
+
name: 'message',
|
|
58
|
+
placeHolder: 'placeHolder'
|
|
59
|
+
},
|
|
60
|
+
checkBox: {
|
|
61
|
+
error: null,
|
|
62
|
+
hasError: true,
|
|
63
|
+
name: 'terms',
|
|
64
|
+
placeHolder: '',
|
|
65
|
+
type: 'checkbox',
|
|
66
|
+
value: false,
|
|
67
|
+
bind: () => {}
|
|
68
|
+
},
|
|
69
|
+
formIsValid: true
|
|
70
|
+
})
|
|
71
|
+
|
|
72
|
+
const config = {
|
|
73
|
+
recaptchaSiteKey: '6LdunNEaAAAAAB1DazkKJFN2CbCT7YbMfUZ80R6C'
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const contactFormProps = {
|
|
77
|
+
t: () => {},
|
|
78
|
+
carStore: {
|
|
79
|
+
formStatus: 'done'
|
|
80
|
+
},
|
|
81
|
+
contactFormValues,
|
|
82
|
+
config
|
|
83
|
+
}
|
|
84
|
+
return (
|
|
85
|
+
<ContactForm { ...contactFormProps }/>
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
storiesOf('ContactForm', module)
|
|
90
|
+
.add('ContactForm', () => (
|
|
91
|
+
<>
|
|
92
|
+
<ContactFormContainer/>
|
|
93
|
+
</>
|
|
94
|
+
));
|
|
File without changes
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
|
|
4
|
+
import { Container, Row, Col } from 'react-grid-system';
|
|
5
|
+
|
|
6
|
+
import ContactInfo from './ContactInfo';
|
|
7
|
+
|
|
8
|
+
const colStyle = {
|
|
9
|
+
outline: 'silver solid 1px'
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const props = {
|
|
13
|
+
t: key => key,
|
|
14
|
+
|
|
15
|
+
title: 1,
|
|
16
|
+
gender: 2,
|
|
17
|
+
street: 'Musterstraße',
|
|
18
|
+
number: '14',
|
|
19
|
+
streetAddition: 'A',
|
|
20
|
+
city: 'Musterstadt',
|
|
21
|
+
zip: '01234',
|
|
22
|
+
countryName: 'Deutschland',
|
|
23
|
+
firstName: 'Peter',
|
|
24
|
+
lastName: 'Mustermann',
|
|
25
|
+
company: 'Company',
|
|
26
|
+
email: 'email@email.com',
|
|
27
|
+
|
|
28
|
+
phoneMain: '(+49) 123 456789',
|
|
29
|
+
phoneMobile: '(+49) 341 456789',
|
|
30
|
+
|
|
31
|
+
ustIdNr: '122134',
|
|
32
|
+
|
|
33
|
+
website: 'www.mustermann.ag',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
storiesOf('ContactInfo', module)
|
|
37
|
+
.add('default', () => (
|
|
38
|
+
<div style={{ width: 992 }}>
|
|
39
|
+
<Container fluid>
|
|
40
|
+
<Row>
|
|
41
|
+
<Col sm={6} style={colStyle}>
|
|
42
|
+
<ContactInfo {...props}/>
|
|
43
|
+
</Col>
|
|
44
|
+
<Col sm={6} style={colStyle}>
|
|
45
|
+
<ContactInfo {...props} company={undefined} phoneMain={undefined}/>
|
|
46
|
+
</Col>
|
|
47
|
+
</Row>
|
|
48
|
+
<Row>
|
|
49
|
+
<Col sm={6} style={colStyle}>
|
|
50
|
+
<ContactInfo {...props} ustIdNr={undefined} website={undefined} company={undefined}/>
|
|
51
|
+
</Col>
|
|
52
|
+
<Col sm={6} style={colStyle}>
|
|
53
|
+
<ContactInfo {...props} phones={undefined} streetAddress={undefined}/>
|
|
54
|
+
</Col>
|
|
55
|
+
</Row>
|
|
56
|
+
</Container>
|
|
57
|
+
</div>
|
|
58
|
+
));
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
// import { action } from '@storybook/addon-actions';
|
|
4
|
+
|
|
5
|
+
import CustomerQuote from './CustomerQuote';
|
|
6
|
+
|
|
7
|
+
const vertical = {
|
|
8
|
+
margin: '10px 0',
|
|
9
|
+
width: '220px',
|
|
10
|
+
backgroundColor: 'white'
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const horizontal = {
|
|
14
|
+
width: '375px',
|
|
15
|
+
backgroundColor: 'white'
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const verticalProps = {
|
|
19
|
+
image: 'http://placekitten.com/200/200',
|
|
20
|
+
name: 'First Last',
|
|
21
|
+
source: 'Kundenbewertung via Google',
|
|
22
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem. Consequuntur distinctio facilis minus necessitatibus possimus quisquam!'
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const horizontalProps = {
|
|
26
|
+
...verticalProps,
|
|
27
|
+
isHorizontal: true
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
storiesOf('CustomerQuote', module)
|
|
31
|
+
.add('CustomerQuote', () => (
|
|
32
|
+
<div>
|
|
33
|
+
<div style={vertical}>
|
|
34
|
+
<CustomerQuote {...verticalProps} />
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
<div style={horizontal}>
|
|
38
|
+
<CustomerQuote {...horizontalProps} />
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
));
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
import styles from './CustomerQuotesSlider.story.styl';
|
|
4
|
+
import CustomerQuotesSlider from './CustomerQuotesSlider';
|
|
5
|
+
|
|
6
|
+
const quotes = [
|
|
7
|
+
{
|
|
8
|
+
id: Date.now().toString(),
|
|
9
|
+
image: 'http://placekitten.com/200/200',
|
|
10
|
+
name: 'First Last',
|
|
11
|
+
source: 'Kundenbewertung via Google',
|
|
12
|
+
review: '“BRückfragen wurden innerhalb kurzer Zeit telefonisch oder per Mail'
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: Date.now().toString(),
|
|
16
|
+
image: 'http://placekitten.com/200/200',
|
|
17
|
+
name: 'Klaus Andres',
|
|
18
|
+
source: 'Google Kundenbevertung',
|
|
19
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem.'
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: Date.now().toString(),
|
|
23
|
+
image: 'http://placekitten.com/200/200',
|
|
24
|
+
name: 'First Last',
|
|
25
|
+
source: 'Kundenbewertung via Google',
|
|
26
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem.'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
id: Date.now().toString(),
|
|
30
|
+
image: 'http://placekitten.com/200/200',
|
|
31
|
+
name: 'First Last',
|
|
32
|
+
source: 'Kundenbewertung via Google',
|
|
33
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem.'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: Date.now().toString(),
|
|
37
|
+
image: 'http://placekitten.com/200/200',
|
|
38
|
+
name: 'First Last',
|
|
39
|
+
source: 'Kundenbewertung via Google',
|
|
40
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem.'
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: Date.now().toString(),
|
|
44
|
+
image: 'http://placekitten.com/200/200',
|
|
45
|
+
name: 'First Last',
|
|
46
|
+
source: 'Kundenbewertung via Google',
|
|
47
|
+
review: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, aperiam autem, culpa doloribus eum nesciunt nihil nulla officia quo ratione velit, vitae voluptatem.'
|
|
48
|
+
}
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
const props = {
|
|
52
|
+
quotes,
|
|
53
|
+
className: styles.multiContainer,
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const singleQuote = {
|
|
57
|
+
quotes,
|
|
58
|
+
className: styles.singleContainer,
|
|
59
|
+
slidesToShow: 1
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
storiesOf('CustomerQuotesSlider', module)
|
|
63
|
+
.add('CustomerQuotesSlider', () => (
|
|
64
|
+
<>
|
|
65
|
+
<div style={{ width: '100%', maxWidth: '716px', backgroundColor: 'white' }}>
|
|
66
|
+
<CustomerQuotesSlider {...props} />
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div style={{ width: '100%', maxWidth: '380px', marginTop: '50px', backgroundColor: 'white' }}>
|
|
70
|
+
<CustomerQuotesSlider {...singleQuote} />
|
|
71
|
+
</div>
|
|
72
|
+
</>
|
|
73
|
+
));
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
|
|
4
|
+
import FormattedNumber from './FormattedNumber';
|
|
5
|
+
|
|
6
|
+
const container = {
|
|
7
|
+
textAlign: 'left'
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const item = {
|
|
11
|
+
margin: '5px 0',
|
|
12
|
+
width: '500px',
|
|
13
|
+
display: 'flex',
|
|
14
|
+
justifyContent: 'space-between'
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const numbers = {
|
|
18
|
+
display: 'inline-flex',
|
|
19
|
+
flexDirection: 'row'
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const simpleStories = [
|
|
23
|
+
{
|
|
24
|
+
title: 'simple number, rounded',
|
|
25
|
+
props: {
|
|
26
|
+
value: 33.25
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
title: 'simple number, formatted, not rounded (small)',
|
|
31
|
+
props: {
|
|
32
|
+
value: 33.25,
|
|
33
|
+
toRound: false
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
title: 'simple number, formatted, not rounded (big)',
|
|
38
|
+
props: {
|
|
39
|
+
value: 55476.36,
|
|
40
|
+
toRound: false
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: 'simple number',
|
|
45
|
+
props: {
|
|
46
|
+
value: 123
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
title: 'fixed after two digits',
|
|
51
|
+
props: {
|
|
52
|
+
value: 325.54
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: 'big number, formatted',
|
|
57
|
+
props: {
|
|
58
|
+
value: 65800000
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
const specialCases = [
|
|
64
|
+
{
|
|
65
|
+
title: 'without props',
|
|
66
|
+
props: {}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
title: 'return original but formatted',
|
|
70
|
+
props: {
|
|
71
|
+
value: 3.99,
|
|
72
|
+
numbersAfterDot: 2,
|
|
73
|
+
toRound: false
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
title: 'return original number',
|
|
78
|
+
props: {
|
|
79
|
+
value: 325.59,
|
|
80
|
+
disableFormatting: true
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
storiesOf('Formatted Number', module)
|
|
86
|
+
.add('default', () => (
|
|
87
|
+
<div style={container}>
|
|
88
|
+
<div>
|
|
89
|
+
<h4>Simple cases</h4>
|
|
90
|
+
{simpleStories.map(({ title, props }, index) => (
|
|
91
|
+
<div style={item} key={index}>
|
|
92
|
+
<span>{title}</span>
|
|
93
|
+
<div style={numbers}>
|
|
94
|
+
<i>{props.value} >>> </i>
|
|
95
|
+
<FormattedNumber { ...props } />
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
))}
|
|
99
|
+
</div>
|
|
100
|
+
<div>
|
|
101
|
+
<h4>Special cases</h4>
|
|
102
|
+
{specialCases.map(({ title, props }, index) => (
|
|
103
|
+
<div style={item} key={index}>
|
|
104
|
+
<span>{title}</span>
|
|
105
|
+
<div style={numbers}>
|
|
106
|
+
<i>{props.value} >>> </i>
|
|
107
|
+
<FormattedNumber { ...props } />
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
))}
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
));
|
|
114
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { storiesOf } from '@storybook/react';
|
|
2
|
+
import { InfoBlockWrapper } from '../../..';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import ServiceBlockItem from './ServicesBlock/ServiceBlockItem';
|
|
5
|
+
// import PricingTool from './PricingToolBlock/PricingToolBlock';
|
|
6
|
+
import styles from './InfoBlockWrapper.story.styl';
|
|
7
|
+
import PricingToolBlock from './PricingToolBlock/PricingToolBlock';
|
|
8
|
+
import { getPriceRatingConfig } from '../../framework/utils/CommonUtils';
|
|
9
|
+
import _get from 'lodash/get';
|
|
10
|
+
import FirstInfoBlock from '../InfoBlocks/FirstInfoBlock/FirstInfoBlock';
|
|
11
|
+
import { firstInfoBlockTranslate } from '../../locales/data';
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
const infoBlockData2 = [
|
|
15
|
+
{
|
|
16
|
+
src: 'orderWhite',
|
|
17
|
+
title: 'order',
|
|
18
|
+
content: 'orderText'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
src: 'customerServiceWhite',
|
|
22
|
+
title: 'customerService',
|
|
23
|
+
content: 'customerServiceText'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
src: 'priceGuaranteeWhite',
|
|
27
|
+
title: 'pay',
|
|
28
|
+
content: 'payText'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
src: 'transportAndDelivery',
|
|
32
|
+
title: 'transport',
|
|
33
|
+
content: 'transportText'
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const pricingToolBlockProps = {
|
|
38
|
+
showModal: () => {},
|
|
39
|
+
hideModal: () => {},
|
|
40
|
+
decoratedProps: { min: 20 },
|
|
41
|
+
currentSalesPrice: 500,
|
|
42
|
+
make: 'opel',
|
|
43
|
+
model: 'omega',
|
|
44
|
+
currentSalesPricePredicted: 100,
|
|
45
|
+
rating: 1,
|
|
46
|
+
ratingConfig: getPriceRatingConfig(10000, 1000),
|
|
47
|
+
equipmentCount: 3,
|
|
48
|
+
priceTabActiveIndex: 2
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const onDetailsClick = () => {
|
|
52
|
+
alert('details click')
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const InfoBlockWrapperContainer = () => {
|
|
56
|
+
const environment = window.location.origin;
|
|
57
|
+
const link = `${environment}/versichern/`;
|
|
58
|
+
return (
|
|
59
|
+
<div>
|
|
60
|
+
<InfoBlockWrapper title='It works so easy'>
|
|
61
|
+
<span className={styles.serviceBlockItemWrapper}>
|
|
62
|
+
{infoBlockData2.map((item, index) => {
|
|
63
|
+
return <ServiceBlockItem
|
|
64
|
+
iconSrc={item.src}
|
|
65
|
+
iconBgColor={true}
|
|
66
|
+
title={`${index + 1}. ${item.title}`}
|
|
67
|
+
content={item.content}
|
|
68
|
+
key={index} />;
|
|
69
|
+
})}
|
|
70
|
+
</span>
|
|
71
|
+
</InfoBlockWrapper>
|
|
72
|
+
{/* <InfoBlockWrapper title='Price review' titleDetails='Details on the price evaluation' onDetailsClick={onDetailsClick}> */}
|
|
73
|
+
<PricingToolBlock { ...pricingToolBlockProps } />
|
|
74
|
+
{/* </InfoBlockWrapper> */}
|
|
75
|
+
<InfoBlockWrapper title='Car insurance' titleDetails='Compare now' onDetailsClick={onDetailsClick}>
|
|
76
|
+
No meaningful price information for this car is possible because too many different factors affect the value.
|
|
77
|
+
</InfoBlockWrapper>
|
|
78
|
+
<a href={link} className={styles.linkContainer}>
|
|
79
|
+
<InfoBlockWrapper title='ititle' titleDetails='ibutton'>
|
|
80
|
+
<ul className={styles.itext}>
|
|
81
|
+
<li>itext1</li>
|
|
82
|
+
<li>itext2</li>
|
|
83
|
+
<li>itext3</li>
|
|
84
|
+
</ul>
|
|
85
|
+
</InfoBlockWrapper>
|
|
86
|
+
</a>
|
|
87
|
+
<FirstInfoBlock t={phrase => _get(firstInfoBlockTranslate(), phrase.replace(':', '.'), phrase)}/>
|
|
88
|
+
</div>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
storiesOf('InfoBlockWrapper', module)
|
|
93
|
+
.add('InfoBlockWrapper', () => (
|
|
94
|
+
<div>
|
|
95
|
+
<div>
|
|
96
|
+
<InfoBlockWrapperContainer />
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
));
|
|
100
|
+
|
|
101
|
+
export default InfoBlockWrapperContainer;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@import '../../theme/mixins.styl'
|
|
2
|
+
|
|
3
|
+
.serviceBlockItemWrapper
|
|
4
|
+
display: grid;
|
|
5
|
+
grid-template-columns: repeat(4, 1fr);
|
|
6
|
+
grid-gap: 50px;
|
|
7
|
+
+media-phone-only()
|
|
8
|
+
grid-template-columns: repeat(1, 1fr);
|
|
9
|
+
grid-gap: 0;
|
|
10
|
+
|
|
11
|
+
.linkContainer
|
|
12
|
+
width: 100%
|
|
13
|
+
box-sizing border-box
|
|
14
|
+
background-color white
|
|
15
|
+
display block
|
|
16
|
+
|
|
17
|
+
.itext
|
|
18
|
+
font-size: 14px
|
|
19
|
+
color: $grey-54
|
|
20
|
+
line-height: 30px;
|
|
21
|
+
list-style: none;
|
|
22
|
+
margin 0;
|
|
23
|
+
padding: 0
|
|
24
|
+
|
|
25
|
+
+media-phone-only()
|
|
26
|
+
font-size: 12px
|
|
27
|
+
color: rgba(0, 0, 0, 0.63);
|
|
28
|
+
line-height: 14px;
|
|
29
|
+
text-align: justify;
|
|
30
|
+
|
|
31
|
+
& > li
|
|
32
|
+
position relative;
|
|
33
|
+
padding-left: 40px;
|
|
34
|
+
|
|
35
|
+
+media-phone-only()
|
|
36
|
+
margin-top: 10px
|
|
37
|
+
|
|
38
|
+
&::before
|
|
39
|
+
content: ''
|
|
40
|
+
position: absolute;
|
|
41
|
+
left: 0;
|
|
42
|
+
top: 50%;
|
|
43
|
+
transform: translateY(-50%);
|
|
44
|
+
width: 24px;
|
|
45
|
+
height: 24px;
|
|
46
|
+
background-image: url('../../../media/svg/common/insurance.svg');
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { storiesOf } from '@storybook/react';
|
|
3
|
+
// import { aboFaq } from '../../../../framework/constants';
|
|
4
|
+
import AboFaq from './AboFaq';
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const item = {
|
|
8
|
+
margin: '5px 0',
|
|
9
|
+
width: '500px',
|
|
10
|
+
display: 'flex',
|
|
11
|
+
justifyContent: 'space-between'
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const numbers = {
|
|
15
|
+
display: 'inline-flex',
|
|
16
|
+
flexDirection: 'row'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const simpleStories = [
|
|
20
|
+
{
|
|
21
|
+
title: 'simple number, rounded',
|
|
22
|
+
props: {
|
|
23
|
+
value: 33.25
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
title: 'simple number, formatted, not rounded (small)',
|
|
28
|
+
props: {
|
|
29
|
+
value: 33.25,
|
|
30
|
+
toRound: false
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: 'simple number, formatted, not rounded (big)',
|
|
35
|
+
props: {
|
|
36
|
+
value: 55476.36,
|
|
37
|
+
toRound: false
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
title: 'simple number',
|
|
42
|
+
props: {
|
|
43
|
+
value: 123
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
title: 'fixed after two digits',
|
|
48
|
+
props: {
|
|
49
|
+
value: 325.54
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
title: 'big number, formatted',
|
|
54
|
+
props: {
|
|
55
|
+
value: 65800000
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
|
|
60
|
+
const specialCases = [
|
|
61
|
+
{
|
|
62
|
+
title: 'without props',
|
|
63
|
+
props: {}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
title: 'return original but formatted',
|
|
67
|
+
props: {
|
|
68
|
+
value: 3.99,
|
|
69
|
+
numbersAfterDot: 2,
|
|
70
|
+
toRound: false
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: 'return original number',
|
|
75
|
+
props: {
|
|
76
|
+
value: 325.59,
|
|
77
|
+
disableFormatting: true
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
storiesOf('Abo FAQ', module)
|
|
83
|
+
.add('default', () => (
|
|
84
|
+
<div>
|
|
85
|
+
<AboFaq />
|
|
86
|
+
{/* {aboFaq.map((item, index) =>
|
|
87
|
+
<span
|
|
88
|
+
className={styles.faqItem}
|
|
89
|
+
onClick={() => onShowFinancingDetailsClick('faqDetails', index)}
|
|
90
|
+
key={item}
|
|
91
|
+
>
|
|
92
|
+
{item}
|
|
93
|
+
</span>
|
|
94
|
+
)} */}
|
|
95
|
+
</div>
|
|
96
|
+
));
|
|
97
|
+
|
|
@@ -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?: React.ReactNode;
|
|
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} text={tooltipDescription} className={styles.tooltipCheckbox} icon='InfoTransparent' />}
|
|
131
|
+
{tooltipDescription && <MaterialTooltip zindex={10000} disablePortal={false} text={tooltipDescription} className={styles.tooltipCheckbox} icon='InfoTransparent' />}
|
|
132
132
|
</span>
|
|
133
133
|
) : false}
|
|
134
134
|
</label>
|
|
@@ -111,6 +111,30 @@
|
|
|
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
|
+
|
|
114
138
|
.checkboxPrice
|
|
115
139
|
align-self: center;
|
|
116
140
|
color: rgba(#000000, .63);
|
|
@@ -11,12 +11,11 @@ interface IOfferPeriod {
|
|
|
11
11
|
transferInstallments?: any;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
const OfferCheckboxGroup: FC<IOfferPeriod> = ({ additionalService,
|
|
14
|
+
const OfferCheckboxGroup: FC<IOfferPeriod> = ({ additionalService, 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 }} />
|
|
20
19
|
</div>
|
|
21
20
|
);
|
|
22
21
|
};
|