@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.
Files changed (194) hide show
  1. package/.husky/pre-push +4 -0
  2. package/.storybook/addons.js +4 -0
  3. package/.storybook/config.js +64 -0
  4. package/.storybook/postcss.config.js +6 -0
  5. package/.storybook/preview-head.html +10 -0
  6. package/.storybook/webpack.config.js +130 -0
  7. package/__tests__/components/Checkout/OrderOverviewItem/OrderOverviewItem.test.tsx +42 -0
  8. package/__tests__/components/Checkout/PaymentTypeCard/PaymentTypeCard.test.tsx +50 -0
  9. package/__tests__/components/Checkout/RadioGroup.test.tsx +95 -0
  10. package/__tests__/components/Checkout/ServiceCardWrapper.test.tsx +53 -0
  11. package/__tests__/components/Checkout/Switcher.test.tsx +43 -0
  12. package/__tests__/components/UserDasboardPage/sections/CheckoutSection/CheckoutSection.test.tsx +613 -0
  13. package/__tests__/components/UserDasboardPage/sections/FavoriteSection/FavoriteSection.test.tsx +335 -0
  14. package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/AdditionalOrderInfo.test.tsx +127 -0
  15. package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCar.test.tsx +58 -0
  16. package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusCard.test.tsx +74 -0
  17. package/__tests__/components/UserDasboardPage/sections/OrderStatusSection/OrderStatusSection.test.tsx +62 -0
  18. package/__tests__/components/UserDasboardPage/sections/RequestedCarsSection/RequestedCarsSection.test.tsx +117 -0
  19. package/__tests__/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.test.tsx +58 -0
  20. package/__tests__/components/VehicleSmallCard/VehicleInfo.test.tsx +88 -0
  21. package/__tests__/components/VehicleSmallCard/VehicleTitle.test.tsx +91 -0
  22. package/__tests__/components/_common/Badge/Badge.test.tsx +15 -0
  23. package/__tests__/components/_common/IconSVG/IconSVG.test.tsx +23 -0
  24. package/__tests__/components/_common/Image/Image.test.tsx +82 -0
  25. package/__tests__/components/_common/MaterialAutocomplete/MaterialAutocomplete.test.tsx +49 -0
  26. package/__tests__/components/_common/MaterialDatePicker/MaterialDatePicker.test.tsx +54 -0
  27. package/__tests__/components/_common/MaterialField/MaterialField.test.tsx +58 -0
  28. package/__tests__/components/_common/StarButton/StarButton.test.tsx +46 -0
  29. package/__tests__/mockedData/financingConfig.js +202 -0
  30. package/__tests__/mockedData/mockedPendingRequestedCar.js +69 -0
  31. package/__tests__/utils/CommonUtils/addPrefixToKeys.test.ts +18 -0
  32. package/__tests__/utils/CommonUtils/arrToObj.test.js +32 -0
  33. package/__tests__/utils/CommonUtils/checkRangeValuesOnEqual.test.ts +17 -0
  34. package/__tests__/utils/CommonUtils/fixNumber.test.ts +20 -0
  35. package/__tests__/utils/CommonUtils/formatMileage.test.ts +8 -0
  36. package/__tests__/utils/CommonUtils/getChipFilterValue.test.ts +22 -0
  37. package/__tests__/utils/CommonUtils/getFormattedNumber.test.ts +19 -0
  38. package/__tests__/utils/CommonUtils/getFormattedPrice.test.ts +19 -0
  39. package/__tests__/utils/CommonUtils/getGroupValuesForQuery.test.ts +51 -0
  40. package/__tests__/utils/CommonUtils/getOfferSliders.test.ts +64 -0
  41. package/__tests__/utils/CommonUtils/getPriceRating.test.ts +26 -0
  42. package/__tests__/utils/CommonUtils/getPriceRatingConfig.test.ts +33 -0
  43. package/__tests__/utils/CommonUtils/preloadNearbyImages.test.ts +9 -0
  44. package/__tests__/utils/CommonUtils/sliceLessThan.test.ts +23 -0
  45. package/__tests__/utils/CommonUtils/sliceMoreThan.test.ts +23 -0
  46. package/media/locales/de/promoSlider.json +1 -0
  47. package/media/locales/en/promoSlider.json +1 -0
  48. package/package.json +117 -120
  49. package/source/components/AccordionWidget/AccordionWidget.styl +1 -0
  50. package/source/components/AccordionWidget/AccordionWidget.tsx +8 -4
  51. package/source/components/AdvantageItem/AdvantageItem.story.js +23 -0
  52. package/source/components/Alternative/Dealer.story.js +32 -0
  53. package/source/components/Alternative/Dealer.story.styl +3 -0
  54. package/source/components/Breadcrumbs/Breadcrumbs.story.js +40 -0
  55. package/source/components/Breadcrumbs/FirstInfoBlock/FirstInfoBlock.story.js +45 -0
  56. package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.js +243 -0
  57. package/source/components/Checkout/OrderOverviewItem/OrderOverviewItem.story.styl +21 -0
  58. package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.js +105 -0
  59. package/source/components/Checkout/RadioCards/RadioGroupCheckout.story.styl +37 -0
  60. package/source/components/Checkout/Switcher/Switcher.story.js +41 -0
  61. package/source/components/Checkout/Switcher/Switcher.story.styl +2 -0
  62. package/source/components/CompactSearchWidget/CompactSearchWidget.story.js +187 -0
  63. package/source/components/ContactForm/ContactForm.story.js +94 -0
  64. package/source/components/ContactForm/ContactForm.story.styl +0 -0
  65. package/source/components/ContactInfo/ContactInfo.story.js +58 -0
  66. package/source/components/CustomerQuote/CustomerQuote.story.js +41 -0
  67. package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.js +73 -0
  68. package/source/components/CustomerQuotesSlider/CustomerQuotesSlider.story.styl +5 -0
  69. package/source/components/FormattedNumber/FormattedNumber.story.js +114 -0
  70. package/source/components/InfoBlocks/InfoBlockWrapper.story.js +101 -0
  71. package/source/components/InfoBlocks/InfoBlockWrapper.story.styl +46 -0
  72. package/source/components/OfferPanel/AboAccordion/AboFaq/AboFaq.story.js +97 -0
  73. package/source/components/OfferPanel/OfferCheckboxGroup/CheckboxContainer.tsx +2 -2
  74. package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.styl +24 -0
  75. package/source/components/OfferPanel/OfferCheckboxGroup/OfferCheckboxGroup.tsx +1 -2
  76. package/source/components/OfferPanel/OfferPanel.story.js +139 -0
  77. package/source/components/OfferPanel/OfferPanel.tsx +1 -1
  78. package/source/components/OfferPanel/RangeGroup/RangeGroup.story.js +35 -0
  79. package/source/components/OfferPanel/RangeGroup/RangeGroup.story.styl +3 -0
  80. package/source/components/PriceRating/PriceRating.story.js +39 -0
  81. package/source/components/PriceRating/PriceRating.story.styl +2 -0
  82. package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.js +78 -0
  83. package/source/components/PriceRatingDetailed/PriceRatingDetailed.story.styl +11 -0
  84. package/source/components/RateSearchValue/RateSearchValue.story.js +78 -0
  85. package/source/components/RateSearchValue/RateSearchValue.story.styl +2 -0
  86. package/source/components/RateSearchWidget/RateSearchWidget.story.js +57 -0
  87. package/source/components/RateSearchWidget/RateSearchWidget.story.styl +12 -0
  88. package/source/components/SearchFilters/FiltersFactory.story.js +273 -0
  89. package/source/components/SearchPage/Filters/MakeModel/MakeModel.story.js +12 -0
  90. package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.js +834 -0
  91. package/source/components/SearchWidget/BasicDataWidget/BasicDataWidget.story.styl +40 -0
  92. package/source/components/SearchWidget/SearchWidget.story.js +191 -0
  93. package/source/components/SearchWidget/SearchWidget.story.styl +6 -0
  94. package/source/components/Stepper/Stepper.story.js +119 -0
  95. package/source/components/Stepper/Stepper.story.styl +41 -0
  96. package/source/components/Theme.story.js +36 -0
  97. package/source/components/Theme.story.styl +85 -0
  98. package/source/components/TickerText/TickerText.story.js +17 -0
  99. package/source/components/UserDashboardPage/sections/OrderStatusSection/OrderStatusSection.story.js +95 -0
  100. package/source/components/UserDashboardPage/sections/RequestedCarsSection/RequestedCarsSection.story.js +97 -0
  101. package/source/components/Vehicle/VehicleConsumption/VehicleConsumption.story.js +31 -0
  102. package/source/components/Vehicle/VehicleFormattedPrice/VehicleFormattedPrice.story.js +247 -0
  103. package/source/components/VehicleCompared/CompareGeneral/CompareGeneral.story.js +30 -0
  104. package/source/components/VehicleCompared/ComparePrice/ComparePrice.story.js +18 -0
  105. package/source/components/VehicleCompared/CompareTitle/CompareTitle.story.js +19 -0
  106. package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.story.js +44 -0
  107. package/source/components/VehicleDetailedSidebar/VehicleDetailedSidebar.tsx +23 -11
  108. package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.story.js +120 -0
  109. package/source/components/VehicleDetailedSlider/VehicleDetailedSlider.tsx +2 -0
  110. package/source/components/VehicleDetailedSlider/partials/PriceData.tsx +7 -4
  111. package/source/components/VehiclePromoSlider/VehiclePromoInfo/VehiclePromoInfo.story.js +42 -0
  112. package/source/components/VehiclePromoSlider/VehiclePromoSlide/VehiclePromoSlide.story.js +62 -0
  113. package/source/components/VehiclePromoSlider/VehiclePromoSlider.story.js +42 -0
  114. package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.styl +5 -0
  115. package/source/components/VehicleSmallCard/VehicleData/VechiclePriceItem/VechiclePriceItem.tsx +3 -1
  116. package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.styl +1 -1
  117. package/source/components/VehicleSmallCard/VehicleData/VehicleInfo/VehicleInfo.tsx +24 -11
  118. package/source/components/VehicleSmallCard/VehicleData/VehiclePrice/VehiclePrice.styl +3 -2
  119. package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.styl +4 -1
  120. package/source/components/VehicleSmallCard/VehicleData/VehicleProperty/VehicleProperty.tsx +3 -2
  121. package/source/components/VehicleSmallCard/VehicleData/VehicleTitle/VehicleTitle.tsx +1 -1
  122. package/source/components/VehicleSmallCard/VehicleSmallCard.story.js +412 -0
  123. package/source/components/VehicleSmallCard/VehicleSmallCard.story.styl +56 -0
  124. package/source/components/VehicleSmallCard/VehicleSmallCard.tsx +14 -3
  125. package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.js +199 -0
  126. package/source/components/VehicleSmallCardForDealerships/VehicleSmallCardForDealerships.story.styl +40 -0
  127. package/source/components/_common/Accordion/Accordion.story.js +36 -0
  128. package/source/components/_common/Badge/Badge.story.js +27 -0
  129. package/source/components/_common/Badge/Badge.story.styl +5 -0
  130. package/source/components/_common/Bubble/Bubble.story.js +52 -0
  131. package/source/components/_common/Button/Button.story.js +52 -0
  132. package/source/components/_common/Button/Button.story.styl +5 -0
  133. package/source/components/_common/ButtonOld/Button.story.js +54 -0
  134. package/source/components/_common/ButtonOld/Button.story.styl +5 -0
  135. package/source/components/_common/Checkbox/Checkbox.story.js +85 -0
  136. package/source/components/_common/Checkbox/Checkbox.story.styl +14 -0
  137. package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.js +126 -0
  138. package/source/components/_common/CheckboxMaterial/CheckboxMaterial.story.styl +14 -0
  139. package/source/components/_common/Chip/Chip.story.js +43 -0
  140. package/source/components/_common/ChipList/ChipList.story.js +36 -0
  141. package/source/components/_common/DropDown/DropDown.story.js +35 -0
  142. package/source/components/_common/ExpandablePanel/ExpandablePanel.story.js +41 -0
  143. package/source/components/_common/Histogram/Histogram.story.js +51 -0
  144. package/source/components/_common/IconSVG/IconSVG.story.js +21 -0
  145. package/source/components/_common/IconSVG/IconSVG.story.styl +25 -0
  146. package/source/components/_common/Image/Image.story.js +142 -0
  147. package/source/components/_common/Image/Image.story.styl +18 -0
  148. package/source/components/_common/ImagesSet/ImagesSet.story.js +34 -0
  149. package/source/components/_common/ImagesSet/ImagesSet.story.styl +4 -0
  150. package/source/components/_common/Loader/Loader.story.js +21 -0
  151. package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.story.js +49 -0
  152. package/source/components/_common/MaterialAccordionGroup/MaterialAccordionGroup.styled.tsx +4 -1
  153. package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.js +45 -0
  154. package/source/components/_common/MaterialDatePicker/MaterialDatePicker.story.styl +6 -0
  155. package/source/components/_common/MaterialField/MaterialField.story.js +87 -0
  156. package/source/components/_common/MaterialField/MaterialField.story.styl +34 -0
  157. package/source/components/_common/MaterialSelect/MaterialSelect.story.js +52 -0
  158. package/source/components/_common/MaterialSelect/MaterialSelect.story.styl +6 -0
  159. package/source/components/_common/MaterialStepButton/MaterialStepButton.story.js +47 -0
  160. package/source/components/_common/MaterialStepButton/MaterialStepButton.story.styl +6 -0
  161. package/source/components/_common/MaterialSwitch/MaterialSwitch.story.js +17 -0
  162. package/source/components/_common/MaterialTooltip/MaterialTooltip.story.js +10 -0
  163. package/source/components/_common/MaterialTooltip/MaterialTooltip.tsx +4 -3
  164. package/source/components/_common/Modal/Modal.story.js +37 -0
  165. package/source/components/_common/MuiGroupedSelect/MuiGroupedSelect.story.js +21 -0
  166. package/source/components/_common/PropertySelector/PSGroup.story.js +93 -0
  167. package/source/components/_common/PropertySelector/PSGroup.story.styl +25 -0
  168. package/source/components/_common/PropertySelector/ProperySelector.story.js +83 -0
  169. package/source/components/_common/Radio/FormRadioGroup.story.js +28 -0
  170. package/source/components/_common/Radio/FormRadioGroup.story.styl +2 -0
  171. package/source/components/_common/Radio/Radio.story.js +54 -0
  172. package/source/components/_common/Radio/RadioGroup.story.js +90 -0
  173. package/source/components/_common/Radio/RadioGroup.story.styl +39 -0
  174. package/source/components/_common/Range/Range.story.js +46 -0
  175. package/source/components/_common/Range/Range.story.styl +5 -0
  176. package/source/components/_common/SliderArrow/SliderArrow.story.js +18 -0
  177. package/source/components/_common/Tabs/Tabs.story.js +56 -0
  178. package/source/components/_common/TimePicker/TimePicker.story.js +37 -0
  179. package/source/components/_common/Tooltip/Tooltip.story.js +28 -0
  180. package/source/components/_common/UserMenu/MaterialMenu.story.js +73 -0
  181. package/source/components/_common/VehicleSlider/VehicleSlider.story.js +99 -0
  182. package/source/components/_common/VehicleSlider/VehicleSlider.story.styl +0 -0
  183. package/source/components/_common/withLabel/withLabel.story.js +62 -0
  184. package/source/components/_common/withPopover/withPopover.story.js +48 -0
  185. package/source/components/_common/withPopover/withPopover.story.styl +54 -0
  186. package/source/components/_common/withStats/withStats.story.js +75 -0
  187. package/source/components/_common/withStats/withStats.styl +10 -0
  188. package/source/components/_common/withStats/withStats.tsx +2 -11
  189. package/source/framework/DataTransformers.ts +1 -0
  190. package/source/framework/constants/common.ts +8 -4
  191. package/source/framework/types/types.ts +1 -0
  192. package/source/framework/vehiclesProps/decoratedLightProps.tsx +48 -12
  193. package/source/framework/vehiclesProps/decoratedProps.tsx +35 -8
  194. 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
+ ));
@@ -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,5 @@
1
+ .singleContainer
2
+ padding: 12px 32px;
3
+
4
+ .multiContainer
5
+ padding: 15px 25px;
@@ -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}&nbsp;>>>&nbsp;</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}&nbsp;>>>&nbsp;</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?: string;
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, transferInstallments, isAboAccordionExpanded0 = true, priceTabIndex }) => {
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
  };