@wayke-se/components-react 3.0.0-beta.11 → 3.0.0-beta.12

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 (274) hide show
  1. package/package.json +4 -2
  2. package/.editorconfig +0 -10
  3. package/.eslintrc.js +0 -62
  4. package/.github/workflows/release-to-production.yaml +0 -40
  5. package/.github/workflows/release-to-test.yaml +0 -40
  6. package/.prettierrc +0 -12
  7. package/assets/ajax-loader.gif +0 -0
  8. package/assets/default.css +0 -1
  9. package/assets/fonts/slick.eot +0 -0
  10. package/assets/fonts/slick.svg +0 -14
  11. package/assets/fonts/slick.ttf +0 -0
  12. package/assets/fonts/slick.woff +0 -0
  13. package/codegen.yml +0 -19
  14. package/esbuild/build.js +0 -39
  15. package/esbuild/common.js +0 -15
  16. package/esbuild/start.js +0 -21
  17. package/esbuild/www/index.html +0 -32
  18. package/example/src/@types/global.d.ts +0 -7
  19. package/example/src/@types/react-panellum.d.ts +0 -1
  20. package/example/src/App.tsx +0 -77
  21. package/example/src/assets/style/ecom.css +0 -63
  22. package/example/src/assets/style/theme.css +0 -83
  23. package/example/src/index.html +0 -26
  24. package/example/src/index.tsx +0 -11
  25. package/example/src/routes/HashRoute/index.tsx +0 -30
  26. package/example/src/routes/Home/index.tsx +0 -33
  27. package/example/src/routes/NotFound/index.tsx +0 -5
  28. package/example/src/routes/PathRoute/index.tsx +0 -35
  29. package/example/src/routes/Search/index.tsx +0 -28
  30. package/example/src/routes/SearchItem/index.tsx +0 -28
  31. package/example/src/routes/index.tsx +0 -25
  32. package/src/@types/action.ts +0 -3
  33. package/src/@types/codegen/types.ts +0 -366
  34. package/src/@types/filter.ts +0 -18
  35. package/src/@types/queryFilter.ts +0 -5
  36. package/src/@types/react-panellum.d.ts +0 -1
  37. package/src/@types/search.ts +0 -118
  38. package/src/@types/theme.d.ts +0 -5
  39. package/src/@types/vehicle-properties.ts +0 -33
  40. package/src/State/CentralStorage/CentralStorageContext.ts +0 -10
  41. package/src/State/CentralStorage/CentralStorageProvider.tsx +0 -21
  42. package/src/State/CentralStorage/useCentralStorage.ts +0 -37
  43. package/src/State/Path/PathContext.ts +0 -11
  44. package/src/State/Path/PathProvider.tsx +0 -66
  45. package/src/State/Path/reducer.ts +0 -30
  46. package/src/State/Path/usePath.ts +0 -13
  47. package/src/State/RelatedSearch/RelatedSearchContext.ts +0 -18
  48. package/src/State/RelatedSearch/RelatedSearchProvider.tsx +0 -55
  49. package/src/State/RelatedSearch/useRelatedSearch.ts +0 -20
  50. package/src/State/Search/SearchContext.ts +0 -27
  51. package/src/State/Search/SearchProvider.tsx +0 -243
  52. package/src/State/Search/useSearch.ts +0 -6
  53. package/src/State/Settings/SettingsContext.ts +0 -15
  54. package/src/State/Settings/SettingsProvider.tsx +0 -23
  55. package/src/State/Settings/useSettings.ts +0 -7
  56. package/src/components/Accordion/index.tsx +0 -57
  57. package/src/components/Accordion/wrapper.tsx +0 -107
  58. package/src/components/ActionList/index.tsx +0 -48
  59. package/src/components/ActionList/toggle-item.tsx +0 -59
  60. package/src/components/Avatar/index.tsx +0 -12
  61. package/src/components/Avatar/wrapper.tsx +0 -21
  62. package/src/components/Badge/index.tsx +0 -12
  63. package/src/components/Badge/wrapper.tsx +0 -32
  64. package/src/components/Blockquote/index.tsx +0 -32
  65. package/src/components/Blockquote/wrapper.tsx +0 -52
  66. package/src/components/Button/index.tsx +0 -226
  67. package/src/components/CheckMarkList/index.tsx +0 -21
  68. package/src/components/CheckMarkList/wrapper.tsx +0 -31
  69. package/src/components/Checklist/index.tsx +0 -51
  70. package/src/components/Checklist/wrapper.tsx +0 -65
  71. package/src/components/ColorSelect/index.tsx +0 -63
  72. package/src/components/ColorSelect/wrapper.tsx +0 -82
  73. package/src/components/ColumnRow/index.tsx +0 -20
  74. package/src/components/Container/index.tsx +0 -11
  75. package/src/components/Container/wrapper.tsx +0 -14
  76. package/src/components/Content/index.tsx +0 -15
  77. package/src/components/Content/wrapper.tsx +0 -61
  78. package/src/components/ContentLogo/index.tsx +0 -27
  79. package/src/components/DataList/index.tsx +0 -25
  80. package/src/components/DataList/wrapper.tsx +0 -29
  81. package/src/components/DetailBox/index.tsx +0 -34
  82. package/src/components/DetailBox/wrapper.tsx +0 -34
  83. package/src/components/ExtendContent/index.tsx +0 -43
  84. package/src/components/ExtendContent/wrapper.tsx +0 -41
  85. package/src/components/ExtendInfo/index.tsx +0 -32
  86. package/src/components/ExtendInfo/wrapper.tsx +0 -63
  87. package/src/components/Filter/index.tsx +0 -108
  88. package/src/components/Filter/wrapper.tsx +0 -79
  89. package/src/components/FilterPanel/checkListFacet.tsx +0 -46
  90. package/src/components/FilterPanel/colorFacet.tsx +0 -47
  91. package/src/components/FilterPanel/faceSelector.tsx +0 -53
  92. package/src/components/FilterPanel/index.tsx +0 -79
  93. package/src/components/FilterPanel/rangeFacet.tsx +0 -128
  94. package/src/components/FinancialOptions/LoanModal.tsx +0 -223
  95. package/src/components/FinancialOptions/index.tsx +0 -29
  96. package/src/components/FinancialOptions/leasing.tsx +0 -77
  97. package/src/components/FinancialOptions/loan.tsx +0 -87
  98. package/src/components/Gallery/MediaButton.tsx +0 -19
  99. package/src/components/Gallery/index.tsx +0 -227
  100. package/src/components/Gallery/wrapper.tsx +0 -323
  101. package/src/components/Grid/index.tsx +0 -87
  102. package/src/components/Grid/wrapper.tsx +0 -30
  103. package/src/components/Heading/index.tsx +0 -72
  104. package/src/components/Icon/index.tsx +0 -87
  105. package/src/components/InputCheckbox/index.tsx +0 -30
  106. package/src/components/InputCheckbox/wrapper.tsx +0 -87
  107. package/src/components/InputGroup/index.tsx +0 -24
  108. package/src/components/InputLabel/index.tsx +0 -14
  109. package/src/components/InputLabel/wrapper.tsx +0 -10
  110. package/src/components/InputSearch/index.tsx +0 -51
  111. package/src/components/InputSearch/wrapper.tsx +0 -97
  112. package/src/components/InputSelect/index.tsx +0 -35
  113. package/src/components/InputSelect/wrapper.tsx +0 -59
  114. package/src/components/InputText/index.tsx +0 -27
  115. package/src/components/InputText/wrapper.tsx +0 -57
  116. package/src/components/InsuranceOptions/Insurance.tsx +0 -60
  117. package/src/components/InsuranceOptions/InsuranceFree.tsx +0 -59
  118. package/src/components/InsuranceOptions/InsuranceFreeModal.tsx +0 -49
  119. package/src/components/InsuranceOptions/InsuranceModal.tsx +0 -253
  120. package/src/components/InsuranceOptions/index.tsx +0 -27
  121. package/src/components/Lightbox/index.tsx +0 -51
  122. package/src/components/Lightbox/wrapper.tsx +0 -97
  123. package/src/components/Loader/index.tsx +0 -18
  124. package/src/components/Loader/wrapper.tsx +0 -50
  125. package/src/components/LogoBox/index.tsx +0 -22
  126. package/src/components/LogoBox/wrapper.tsx +0 -19
  127. package/src/components/Map/index.tsx +0 -62
  128. package/src/components/Map/wrapper.tsx +0 -29
  129. package/src/components/Modal/index.tsx +0 -51
  130. package/src/components/Modal/wrapper.tsx +0 -127
  131. package/src/components/OpeningHours/index.tsx +0 -145
  132. package/src/components/OptionBox/index.tsx +0 -23
  133. package/src/components/OptionBox/wrapper.tsx +0 -56
  134. package/src/components/OverflowBox/index.tsx +0 -11
  135. package/src/components/OverflowBox/wrapper.tsx +0 -7
  136. package/src/components/OverflowGrid/index.tsx +0 -70
  137. package/src/components/Page/index.tsx +0 -46
  138. package/src/components/Panel/index.tsx +0 -50
  139. package/src/components/Panel/wrapper.tsx +0 -155
  140. package/src/components/Pdf/index.tsx +0 -46
  141. package/src/components/Pdf/wrapper.tsx +0 -61
  142. package/src/components/PhoneNumber/index.tsx +0 -33
  143. package/src/components/Portal/index.ts +0 -5
  144. package/src/components/Portal/portal-element.tsx +0 -9
  145. package/src/components/Portal/portal-namespace.ts +0 -1
  146. package/src/components/Portal/portal.tsx +0 -36
  147. package/src/components/Price/index.tsx +0 -12
  148. package/src/components/PriceTable/index.tsx +0 -34
  149. package/src/components/PriceTable/wrapper.tsx +0 -27
  150. package/src/components/ProductCard/index.tsx +0 -133
  151. package/src/components/ProductCard/wrapper.tsx +0 -147
  152. package/src/components/ProductPage/index.tsx +0 -99
  153. package/src/components/ProgressBar/index.tsx +0 -31
  154. package/src/components/ProgressBar/wrapper.tsx +0 -29
  155. package/src/components/RangeSlider/RangeSliderSimple.tsx +0 -90
  156. package/src/components/RangeSlider/SliderWithLabel.tsx +0 -62
  157. package/src/components/RangeSlider/handle.tsx +0 -26
  158. package/src/components/RangeSlider/index.tsx +0 -132
  159. package/src/components/RangeSlider/track.tsx +0 -19
  160. package/src/components/RangeSlider/wrapper.tsx +0 -93
  161. package/src/components/RangeSliderLabel/index.tsx +0 -18
  162. package/src/components/RangeSliderLabel/wrapper.tsx +0 -33
  163. package/src/components/Repeat/index.tsx +0 -21
  164. package/src/components/Result/index.tsx +0 -91
  165. package/src/components/Result/wrapper.tsx +0 -39
  166. package/src/components/Root/index.tsx +0 -24
  167. package/src/components/SearchBar/index.tsx +0 -48
  168. package/src/components/SearchFilter/index.tsx +0 -31
  169. package/src/components/SearchTerm/index.tsx +0 -23
  170. package/src/components/SearchTerm/wrapper.tsx +0 -71
  171. package/src/components/SectionHeader/index.tsx +0 -25
  172. package/src/components/SectionHeader/wrapper.tsx +0 -17
  173. package/src/components/Snackbar/index.tsx +0 -35
  174. package/src/components/Snackbar/wrapper.tsx +0 -65
  175. package/src/components/SortSelect/index.tsx +0 -35
  176. package/src/components/SortSelect/wrapper.tsx +0 -54
  177. package/src/components/Sphere/Sphere.tsx +0 -49
  178. package/src/components/Sphere/SphereLightbox.tsx +0 -10
  179. package/src/components/Sphere/SphereViewer.tsx +0 -81
  180. package/src/components/Sphere/wrapper.tsx +0 -253
  181. package/src/components/SrOnly/index.tsx +0 -14
  182. package/src/components/SwitchBar/index.tsx +0 -55
  183. package/src/components/SwitchBar/wrapper.tsx +0 -80
  184. package/src/components/TableColumn/index.tsx +0 -18
  185. package/src/components/TableList/index.tsx +0 -39
  186. package/src/components/Tabs/index.tsx +0 -34
  187. package/src/components/Tabs/wrapper.tsx +0 -82
  188. package/src/components/ThreeSixty/Rotation.tsx +0 -136
  189. package/src/components/ThreeSixty/ThreeSixtLightbox.tsx +0 -34
  190. package/src/components/ThreeSixty/ThreeSixty.tsx +0 -53
  191. package/src/components/UspList/index.tsx +0 -47
  192. package/src/components/UspList/wrapper.tsx +0 -92
  193. package/src/components/Utility/index.tsx +0 -17
  194. package/src/components/Video/CustomPlayer.tsx +0 -28
  195. package/src/components/Video/EmbeddedVideoLightbox.tsx +0 -31
  196. package/src/components/Video/EmbededVideo.tsx +0 -72
  197. package/src/components/Video/QuickNavEmbeded.tsx +0 -35
  198. package/src/components/Video/QuickNavVideo.tsx +0 -14
  199. package/src/components/Video/Video.tsx +0 -18
  200. package/src/components/Video/VimeoPlayer.tsx +0 -21
  201. package/src/components/Video/YoutubePlayer.tsx +0 -21
  202. package/src/components/Video/useThumbnail.ts +0 -28
  203. package/src/components/Video/utils.ts +0 -47
  204. package/src/components/Video/wrapper.tsx +0 -29
  205. package/src/hooks/useFetch.ts +0 -88
  206. package/src/hooks/useHasBeenVisible.ts +0 -17
  207. package/src/hooks/useHashGuid.ts +0 -33
  208. package/src/hooks/useInsurance.ts +0 -22
  209. package/src/hooks/useLoan.ts +0 -21
  210. package/src/hooks/useOnScreen.ts +0 -20
  211. package/src/hooks/useOutsideClick.ts +0 -19
  212. package/src/hooks/usePrevious.ts +0 -11
  213. package/src/hooks/useSearchItem.ts +0 -11
  214. package/src/hooks/useSearchItemBranch.ts +0 -14
  215. package/src/hooks/useSessionStorage.ts +0 -32
  216. package/src/hooks/useVimeoThumbnail.ts +0 -31
  217. package/src/images/map/marker.png +0 -0
  218. package/src/images/placeholders/staticmap.jpg +0 -0
  219. package/src/index-dev.tsx +0 -42
  220. package/src/index-esbuild.ts +0 -74
  221. package/src/index.ts +0 -72
  222. package/src/layout/helpers.tsx +0 -6
  223. package/src/layout/keyframes.tsx +0 -23
  224. package/src/layout/theme.ts +0 -60
  225. package/src/layouts/WaykeComposite.tsx +0 -64
  226. package/src/layouts/WaykeCompositeWithProvider.tsx +0 -17
  227. package/src/layouts/search/index.tsx +0 -124
  228. package/src/layouts/searchItem/Branch.tsx +0 -97
  229. package/src/layouts/searchItem/BranchModal.tsx +0 -67
  230. package/src/layouts/searchItem/CheckList.tsx +0 -146
  231. package/src/layouts/searchItem/ManufacturerPackagesOption.tsx +0 -54
  232. package/src/layouts/searchItem/MetadataItem.tsx +0 -74
  233. package/src/layouts/searchItem/PackageOptionModal.tsx +0 -54
  234. package/src/layouts/searchItem/PackageOptions.tsx +0 -58
  235. package/src/layouts/searchItem/Page404.tsx +0 -17
  236. package/src/layouts/searchItem/PageLoading.tsx +0 -17
  237. package/src/layouts/searchItem/Property.tsx +0 -134
  238. package/src/layouts/searchItem/Related.tsx +0 -120
  239. package/src/layouts/searchItem/index.tsx +0 -342
  240. package/src/providers/WaykeItemProvidet.tsx +0 -63
  241. package/src/providers/WaykeProvider.tsx +0 -75
  242. package/src/providers/graphqlProvider.tsx +0 -9
  243. package/src/providers/themeProvider.tsx +0 -15
  244. package/src/queries/INSURANCE_CALCULATION.ts +0 -43
  245. package/src/queries/LOAN_CALCULATION.ts +0 -39
  246. package/src/queries/SEARCH_ITEM_BRANCH_QUERY.ts +0 -120
  247. package/src/queries/SEARCH_ITEM_QUERY.ts +0 -237
  248. package/src/utils/constants.ts +0 -34
  249. package/src/utils/converters.ts +0 -45
  250. package/src/utils/deep-copy.ts +0 -6
  251. package/src/utils/formats.ts +0 -83
  252. package/src/utils/metadata.min.ts +0 -87
  253. package/src/utils/phonenumbers.ts +0 -17
  254. package/src/utils/pubsub/Actions.ts +0 -20
  255. package/src/utils/pubsub/Events.ts +0 -79
  256. package/src/utils/pubsub/pubsub.ts +0 -151
  257. package/src/utils/regex.ts +0 -13
  258. package/src/utils/sortOptions.ts +0 -36
  259. package/src/utils/specification.ts +0 -581
  260. package/src/utils/ssn.ts +0 -1
  261. package/src/utils/url.ts +0 -1
  262. package/src/utils/vehicle-properties/compare-basic-properties.ts +0 -63
  263. package/src/utils/vehicle-properties/compare-categories.ts +0 -45
  264. package/src/utils/vehicle-properties/compare-properties.ts +0 -5
  265. package/src/utils/vehicle-properties/custom-property-adder.ts +0 -163
  266. package/src/utils/vehicle-properties/property-hint-enricher.ts +0 -230
  267. package/src/utils/vehicle-properties/property-remover.ts +0 -28
  268. package/src/utils/vehicle-properties/property-tree-creator.ts +0 -171
  269. package/src/utils/vehicle-properties/property-tree-sorter.ts +0 -20
  270. package/tsconfig.build.json +0 -10
  271. package/tsconfig.eslint.json +0 -11
  272. package/tsconfig.json +0 -18
  273. package/webpack.analyze.js +0 -10
  274. package/webpack.config.js +0 -95
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
-
3
- import Container from '../../components/Container/index';
4
- import { Page, PageSection } from '../../components/Page/index';
5
- import { H1 } from '../../components/Heading/index';
6
-
7
- const Page404 = () => (
8
- <Page>
9
- <PageSection large>
10
- <Container>
11
- <H1 noMargin>404</H1>
12
- </Container>
13
- </PageSection>
14
- </Page>
15
- );
16
-
17
- export default Page404;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
-
3
- import Container from '../../components/Container/index';
4
- import { Page, PageSection } from '../../components/Page/index';
5
- import Loader from '../../components/Loader/index';
6
-
7
- const PageLoading = () => (
8
- <Page>
9
- <PageSection large>
10
- <Container>
11
- <Loader />
12
- </Container>
13
- </PageSection>
14
- </Page>
15
- );
16
-
17
- export default PageLoading;
@@ -1,134 +0,0 @@
1
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
- import { Category, Property } from '../../@types/vehicle-properties';
3
- import PropertyTreeCreator from '../../utils/vehicle-properties/property-tree-creator';
4
- import sortTree from '../../utils/vehicle-properties/property-tree-sorter';
5
- import enrichWithHint from '../../utils/vehicle-properties/property-hint-enricher';
6
- import addCustomProperties from '../../utils/vehicle-properties/custom-property-adder';
7
- import removeProperties from '../../utils/vehicle-properties/property-remover';
8
- import MetadataItem from './MetadataItem';
9
-
10
- import { H5 } from '../../components/Heading/index';
11
- import { Repeat } from '../../components/Repeat/index';
12
- import { TableList } from '../../components/TableList/index';
13
- import Tabs from '../../components/Tabs/index';
14
- import { VehicleData } from '../../@types/codegen/types';
15
-
16
- interface MetadataSubCategoryProps {
17
- name: string;
18
- properties: Property[];
19
- }
20
-
21
- const MetadataSubCategory = ({ name, properties }: MetadataSubCategoryProps) => (
22
- <Repeat>
23
- <H5 as="h3">{name}</H5>
24
- <TableList>
25
- {!!properties.length &&
26
- properties.map((property, index) => (
27
- <MetadataItem
28
- name={property.name}
29
- hint={property.hint}
30
- value={property.value}
31
- unit={property.unit}
32
- key={`${property.name}-${index}`}
33
- />
34
- ))}
35
- </TableList>
36
- </Repeat>
37
- );
38
-
39
- interface MetadataCaregoryProps {
40
- properties: Property[];
41
- subCategories: Category[];
42
- }
43
-
44
- const MetadataCategory = ({ properties, subCategories }: MetadataCaregoryProps) => (
45
- <div className="tab-section">
46
- {!!properties.length && (
47
- <Repeat>
48
- <TableList>
49
- {properties.map((property, index) => (
50
- <MetadataItem
51
- name={property.name}
52
- hint={property.hint}
53
- value={property.value}
54
- unit={property.unit}
55
- key={`${property.name}-${index}`}
56
- />
57
- ))}
58
- </TableList>
59
- </Repeat>
60
- )}
61
- {!!subCategories.length &&
62
- subCategories.map((subCategory, index) => (
63
- <MetadataSubCategory
64
- name={subCategory.name}
65
- properties={subCategory.properties}
66
- key={`${subCategory.name}-${index}`}
67
- />
68
- ))}
69
- </div>
70
- );
71
-
72
- interface PropertySetProps {
73
- propertySet: any;
74
- vehicleData: VehicleData;
75
- }
76
-
77
- const PropertySet = ({ propertySet, vehicleData }: PropertySetProps) => {
78
- const [activeCategoryId, setActiveCategoryId] = useState(-1);
79
- const mappedProperties = useMemo(() => {
80
- if (!propertySet) {
81
- return undefined;
82
- }
83
-
84
- let newProperties = removeProperties(propertySet);
85
- newProperties = addCustomProperties(vehicleData, newProperties);
86
- const enrichedProperties = enrichWithHint(newProperties);
87
-
88
- const tree = new PropertyTreeCreator(enrichedProperties).create();
89
- sortTree(tree);
90
- return tree;
91
- }, [propertySet]);
92
-
93
- useEffect(() => {
94
- const categories =
95
- mappedProperties?.categories?.length !== undefined ? mappedProperties?.categories : undefined;
96
-
97
- if (activeCategoryId < 0 && categories !== undefined && categories.length > 0) {
98
- setActiveCategoryId(categories[0].id);
99
- }
100
- }, [mappedProperties]);
101
-
102
- const onTab = useCallback((id: string) => setActiveCategoryId(parseInt(id, 10)), []);
103
-
104
- const activeCategory = mappedProperties?.categories?.find(
105
- (category) => category.id === activeCategoryId
106
- );
107
-
108
- return (
109
- <>
110
- <Repeat>
111
- <Tabs
112
- tabs={
113
- mappedProperties?.categories?.map((category) => ({
114
- name: `${category.id}`,
115
- displayName: category.name,
116
- })) || []
117
- }
118
- active={`${activeCategoryId}`}
119
- onClick={onTab}
120
- />
121
- </Repeat>
122
- {activeCategory && (
123
- <Repeat>
124
- <MetadataCategory
125
- properties={activeCategory.properties}
126
- subCategories={activeCategory.subCategories}
127
- />
128
- </Repeat>
129
- )}
130
- </>
131
- );
132
- };
133
-
134
- export default PropertySet;
@@ -1,120 +0,0 @@
1
- import React, { useCallback } from 'react';
2
-
3
- import Container from '../../components/Container/index';
4
- import { Repeat } from '../../components/Repeat/index';
5
-
6
- import { PageSection } from '../../components/Page/index';
7
- import SectionHeader from '../../components/SectionHeader/index';
8
- import {
9
- OverflowGridList,
10
- OverflowGrid,
11
- OverflowGridItem,
12
- } from '../../components/OverflowGrid/index';
13
- import ProductCard from '../../components/ProductCard/index';
14
- import { H2 } from '../../components/Heading/index';
15
- import useRelatedSearch from '../../State/RelatedSearch/useRelatedSearch';
16
- import Loader from '../../components/Loader/index';
17
- import { numberSeparator } from '../../utils/formats';
18
- import PubSub from '../../utils/pubsub/pubsub';
19
- import { regexPathGuid } from '../../utils/regex';
20
-
21
- interface RelatedProps {
22
- id: string;
23
- hashRoute?: boolean;
24
- pathRoute?: string;
25
- onClickSearchItem?: (id: string) => void;
26
- }
27
-
28
- const Related = ({ id, hashRoute, pathRoute, onClickSearchItem }: RelatedProps) => {
29
- const { loading, response, moreLikeThisUrl } = useRelatedSearch(id);
30
-
31
- const onItemClicked = useCallback((id: string) => {
32
- PubSub.publish('ItemClicked', id);
33
- if (onClickSearchItem) {
34
- onClickSearchItem(id);
35
- }
36
- }, []);
37
-
38
- if (!response?.documentList.documents.length || response?.documentList.documents.length === 0) {
39
- return null;
40
- }
41
-
42
- if (loading) {
43
- return <Loader />;
44
- }
45
-
46
- return (
47
- <PageSection accent large className="wayke__theme wayke__color--accent-bg">
48
- <Container>
49
- {moreLikeThisUrl ? (
50
- <Repeat>
51
- <SectionHeader onClick={() => {}}>
52
- <H2 noMargin>Relaterade fordon</H2>
53
- </SectionHeader>
54
- </Repeat>
55
- ) : (
56
- <Repeat>
57
- <SectionHeader onClick={() => {}} actionTitle="Visa alla">
58
- <H2 noMargin>Senast inkomna</H2>
59
- </SectionHeader>
60
- </Repeat>
61
- )}
62
-
63
- <Repeat>
64
- <OverflowGrid>
65
- <OverflowGridList>
66
- {response?.documentList.documents.map((document) => {
67
- const prefix = pathRoute ? `/${pathRoute}` : '/';
68
-
69
- const r = regexPathGuid(pathRoute);
70
-
71
- const pathRouteUrl =
72
- window.location.pathname === '/'
73
- ? `${prefix}${document._id}`
74
- : r.test(`${pathRoute}${id}`)
75
- ? window.location.pathname.replace(r, `${pathRoute}${document._id}`)
76
- : `${window.location.pathname}${prefix}${document._id}`;
77
-
78
- return (
79
- <OverflowGridItem key={document._id}>
80
- <ProductCard
81
- id={document._id}
82
- onClick={onItemClicked}
83
- title={document.title}
84
- href={pathRoute ? pathRouteUrl : hashRoute ? `#${document._id}` : undefined}
85
- image={document.featuredImage?.files?.[0]?.url}
86
- description={document.shortDescription}
87
- uspList={[
88
- {
89
- title: document.modelYear,
90
- },
91
- {
92
- title: `${numberSeparator(document.mileage)} mil`,
93
- },
94
- {
95
- title: document.gearboxType,
96
- },
97
- {
98
- title: document.fuelType,
99
- },
100
- ]}
101
- price={`${numberSeparator(document.price)} kr`}
102
- oldPrice={
103
- document.oldPrice !== undefined && document.price < document.oldPrice
104
- ? `${numberSeparator(document.oldPrice)} kr`
105
- : undefined
106
- }
107
- pathRoute={pathRoute}
108
- />
109
- </OverflowGridItem>
110
- );
111
- })}
112
- </OverflowGridList>
113
- </OverflowGrid>
114
- </Repeat>
115
- </Container>
116
- </PageSection>
117
- );
118
- };
119
-
120
- export default Related;
@@ -1,342 +0,0 @@
1
- import React, { useMemo, useRef, useCallback, useEffect } from 'react';
2
- import WaykeEcomWeb from '@wayke-se/ecom-web';
3
-
4
- import Container from '../../components/Container/index';
5
- import UspList from '../../components/UspList/index';
6
- import { Repeat, RepeatSmall } from '../../components/Repeat/index';
7
- import PriceTable from '../../components/PriceTable/index';
8
- import LogoBox from '../../components/LogoBox/index';
9
- import Content from '../../components/Content/index';
10
- import Blockquote from '../../components/Blockquote/index';
11
- import ExtendContent from '../../components/ExtendContent/index';
12
- import Gallery from '../../components/Gallery/index';
13
- import { Page, PageSection } from '../../components/Page/index';
14
- import {
15
- ProductPage,
16
- ProductPageMainSection,
17
- ProductPageAside,
18
- ProductPageMain,
19
- ProductPageAsideSection,
20
- } from '../../components/ProductPage/index';
21
- import { H1, H2 } from '../../components/Heading/index';
22
- import { ButtonPrimary, ButtonContent, ButtonInlineLight } from '../../components/Button/index';
23
- import { UtilityFontSizeSmall } from '../../components/Utility/index';
24
- import { IconChevronLeft } from '../../components/Icon/index';
25
- import useSearchItem from '../../hooks/useSearchItem';
26
- import { notEmpty, numberSeparator, dateTimeFormat } from '../../utils/formats';
27
- import { PortalNamespace, PortalElement } from '../../components/Portal/index';
28
- import Modal from '../../components/Modal/index';
29
- import FinancialOptions from '../../components/FinancialOptions/index';
30
- import InsuranceOptions from '../../components/InsuranceOptions/index';
31
- import ManufacturerPackageOption from './ManufacturerPackagesOption';
32
- import CheckList from './CheckList';
33
- import Related from './Related';
34
- import PackageOptions from './PackageOptions';
35
- import Branch from './Branch';
36
- import useCentralStorage from '../../State/CentralStorage/useCentralStorage';
37
- import Page404 from './Page404';
38
- import PageLoading from './PageLoading';
39
- import PubSub from '../../utils/pubsub/pubsub';
40
- import Property from './Property';
41
- import PdfDownloadContainer from '../../components/Pdf/index';
42
- import useSettings from '../../State/Settings/useSettings';
43
-
44
- export interface WaykeSearchItemProps {
45
- id: string;
46
- hashRoute?: boolean;
47
- pathRoute?: string;
48
- disableResetScrollOnInit?: boolean;
49
- placeholderImage?: string;
50
- modifyDocumentTitleItem?: boolean;
51
- onClickSearchItem?: (id: string) => void;
52
- }
53
-
54
- const WaykeSearchItem = ({
55
- id,
56
- hashRoute,
57
- pathRoute,
58
- disableResetScrollOnInit,
59
- placeholderImage,
60
- modifyDocumentTitleItem,
61
- onClickSearchItem,
62
- }: WaykeSearchItemProps) => {
63
- const { ecomSettings } = useSettings();
64
- const ecomContext = useRef<WaykeEcomWeb | undefined>();
65
- const { loading, data: result } = useSearchItem(id);
66
- const { vehicle: centralStorageVehicle, loading: loadingCentralStorageVehicle } =
67
- useCentralStorage(result?.vehicle);
68
-
69
- useEffect(() => {
70
- if (ecomSettings) {
71
- ecomContext.current = new WaykeEcomWeb({
72
- id,
73
- ecomSdkConfig: {
74
- api: {
75
- address: ecomSettings.url,
76
- },
77
- bankIdThumbprint: ecomSettings?.bankIdThumbprint,
78
- },
79
- logo: ecomSettings.serviceLogotypeUrl,
80
- logoX2: ecomSettings.serviceLogotypeUrl,
81
- onEvent(view, event, currentStep?, data?) {
82
- PubSub.publish('EcomOnUserEvent', view, event, currentStep, data);
83
- },
84
- });
85
- }
86
- return () => {
87
- if (ecomContext.current) {
88
- ecomContext.current.destroy();
89
- }
90
- };
91
- }, []);
92
-
93
- useEffect(() => {
94
- if (!disableResetScrollOnInit) {
95
- window.scrollTo(0, 0);
96
- }
97
- }, []);
98
-
99
- useEffect(() => {
100
- if (result?.vehicle?.data && modifyDocumentTitleItem) {
101
- const { vehicle } = result;
102
- const { registrationNumber } = vehicle.data;
103
- document.title = `${registrationNumber} | ${vehicle.title} | ${vehicle.shortDescription}`;
104
- }
105
- }, [result]);
106
-
107
- const options = useMemo(
108
- () => result?.vehicle?.data?.options?.filter(notEmpty).map((opt) => ({ title: opt })),
109
- [result?.vehicle?.data?.options]
110
- );
111
-
112
- const onShowMoreOptionsClick = useCallback(() => PubSub.publish('OptionsClick'), []);
113
-
114
- if (loading) {
115
- return <PageLoading />;
116
- }
117
-
118
- if (!result?.vehicle?.data) {
119
- return <Page404 />;
120
- }
121
-
122
- const { vehicle } = result;
123
- const contact = centralStorageVehicle?.contact;
124
- const branch = centralStorageVehicle?.branch;
125
- const {
126
- title,
127
- shortDescription,
128
- media,
129
- description,
130
- price,
131
- financialOptions,
132
- manufacturer,
133
- ecommerce,
134
- packageOptions,
135
- publishedAt,
136
- documents,
137
- } = vehicle;
138
- const insuranceOptions = centralStorageVehicle?.insuranceOptions
139
- ? centralStorageVehicle.insuranceOptions
140
- : vehicle.insuranceOptions;
141
- const { fuelType, mileage, gearbox, modelYear, propertySet } = vehicle.data;
142
-
143
- const uspList = [
144
- {
145
- title: modelYear,
146
- },
147
- {
148
- title: `${numberSeparator(mileage)} mil`,
149
- },
150
- ];
151
- if (gearbox) {
152
- uspList.push({ title: gearbox });
153
- }
154
-
155
- if (fuelType) {
156
- uspList.push({ title: fuelType });
157
- }
158
-
159
- return (
160
- <>
161
- <Page>
162
- <PageSection large>
163
- <Container>
164
- <ProductPage>
165
- <ProductPageAside>
166
- <ProductPageAsideSection mobileOrder={1}>
167
- {!pathRoute && hashRoute ? (
168
- <Repeat>
169
- <UtilityFontSizeSmall>
170
- <ButtonInlineLight as="a" href="#" title="Tillbaka till bilsök">
171
- <ButtonContent>
172
- <IconChevronLeft block />
173
- </ButtonContent>
174
- <ButtonContent>Tillbaka till bilsök</ButtonContent>
175
- </ButtonInlineLight>
176
- </UtilityFontSizeSmall>
177
- </Repeat>
178
- ) : null}
179
- {manufacturer?.logotype && (
180
- <Repeat>
181
- <LogoBox logo={manufacturer.logotype} alt={manufacturer.name} />
182
- </Repeat>
183
- )}
184
- <Repeat>
185
- <RepeatSmall>
186
- <H1 noMargin>{title}</H1>
187
- </RepeatSmall>
188
- {shortDescription && (
189
- <RepeatSmall>
190
- <div>{shortDescription}</div>
191
- </RepeatSmall>
192
- )}
193
- <RepeatSmall>
194
- <UspList small items={uspList} />
195
- </RepeatSmall>
196
- </Repeat>
197
- </ProductPageAsideSection>
198
-
199
- <ProductPageAsideSection mobileOrder={2}>
200
- <PriceTable price={price} />
201
- </ProductPageAsideSection>
202
-
203
- {(financialOptions.length > 0 || insuranceOptions.length > 0) && (
204
- <ProductPageAsideSection mobileOrder={4}>
205
- {financialOptions.length > 0 && (
206
- <FinancialOptions id={id} financialOptions={financialOptions} />
207
- )}
208
- {insuranceOptions.length > 0 && (
209
- <InsuranceOptions
210
- id={id}
211
- branch={centralStorageVehicle?.branch}
212
- insuranceOptions={insuranceOptions}
213
- />
214
- )}
215
- </ProductPageAsideSection>
216
- )}
217
-
218
- <ProductPageAsideSection mobileOrder={5}>
219
- <CheckList
220
- manufacturer={manufacturer}
221
- packageOptions={packageOptions}
222
- ecommerce={ecommerce}
223
- branch={branch}
224
- contact={centralStorageVehicle?.contact}
225
- loadingCentralStorageVehicle={loadingCentralStorageVehicle}
226
- toggleEcomModal={() => ecomContext.current?.start()}
227
- />
228
- </ProductPageAsideSection>
229
- </ProductPageAside>
230
- <ProductPageMain>
231
- <ProductPageAsideSection mobileOrder={3}>
232
- <Gallery media={media} placeholderImage={placeholderImage} />
233
- </ProductPageAsideSection>
234
-
235
- <ProductPageMainSection>
236
- <Repeat>
237
- <H2 noMargin>Biluppgifter</H2>
238
- </Repeat>
239
- <Repeat>
240
- <Content>
241
- <p>Information direkt från Transportstyrelsen och tillverkaren.</p>
242
- </Content>
243
- </Repeat>
244
- <Repeat>
245
- <Property propertySet={propertySet} vehicleData={vehicle.data} />
246
- </Repeat>
247
- </ProductPageMainSection>
248
-
249
- {description && (
250
- <ProductPageMainSection>
251
- <Blockquote
252
- author={contact && contact.name ? contact.name : null}
253
- date={
254
- publishedAt
255
- ? dateTimeFormat.format(publishedAt, dateTimeFormat.DayMonth)
256
- : undefined
257
- }
258
- avatar={contact?.avatar || undefined}
259
- >
260
- {!!description && <p>{description}</p>}
261
- </Blockquote>
262
- </ProductPageMainSection>
263
- )}
264
-
265
- {(options?.length || 0) > 0 && (
266
- <ProductPageMainSection>
267
- <Repeat>
268
- <H2 noMargin>Utrustning</H2>
269
- </Repeat>
270
- <Repeat>
271
- <Content>
272
- <p>Kompletterande uppgifter om bilen.</p>
273
- </Content>
274
- </Repeat>
275
- <Repeat>
276
- <ExtendContent actionTitle="Visa mer" onClick={onShowMoreOptionsClick}>
277
- <UspList items={options} />
278
- </ExtendContent>
279
- </Repeat>
280
- </ProductPageMainSection>
281
- )}
282
-
283
- {(documents.length || 0) > 0 && (
284
- <ProductPageMainSection>
285
- <Repeat>
286
- <H2 noMargin>Dokument</H2>
287
- </Repeat>
288
- <Repeat>
289
- <Content>
290
- <p>Tillhörande dokument för bilen.</p>
291
- </Content>
292
- </Repeat>
293
- <Repeat>
294
- <PdfDownloadContainer documents={documents} />
295
- </Repeat>
296
- </ProductPageMainSection>
297
- )}
298
-
299
- <ProductPageMainSection>
300
- <Branch branch={branch} loading={loadingCentralStorageVehicle} />
301
- {ecommerce && ecommerce.enabled && (
302
- <Repeat>
303
- <ButtonPrimary
304
- disabled={!!ecommerce.reserved}
305
- title="Köp bilen online"
306
- onClick={() => ecomContext.current?.start()}
307
- >
308
- Köp bilen online
309
- </ButtonPrimary>
310
- </Repeat>
311
- )}
312
- </ProductPageMainSection>
313
- <PackageOptions packageOptions={packageOptions} />
314
- <ManufacturerPackageOption packageOption={manufacturer?.packageOption} />
315
- </ProductPageMain>
316
- </ProductPage>
317
- </Container>
318
- </PageSection>
319
- <Related
320
- id={id}
321
- hashRoute={hashRoute}
322
- pathRoute={pathRoute}
323
- onClickSearchItem={onClickSearchItem}
324
- />
325
- </Page>
326
- {false && (
327
- <Modal title="Modal" onClose={() => {}}>
328
- <Content>
329
- <p>
330
- Priset är ett cirkapris och baserat på ditt avtals antal månader och din beräknade
331
- årliga körsträcka. Kostnad för försäkring och serviceavtal tillkommer. Kontakta
332
- säljare för komplett kostnadsförslag.{' '}
333
- </p>
334
- </Content>
335
- </Modal>
336
- )}
337
- <PortalElement id={PortalNamespace.DefaultPortal} />
338
- </>
339
- );
340
- };
341
-
342
- export default WaykeSearchItem;
@@ -1,63 +0,0 @@
1
- import React from 'react';
2
-
3
- import GraphqlProvider from './graphqlProvider';
4
- import Theme from './themeProvider';
5
- import Root from '../components/Root/index';
6
-
7
- import SettingsProvider from '../State/Settings/SettingsProvider';
8
- import RelatedSearchProvider from '../State/RelatedSearch/RelatedSearchProvider';
9
- import CentralStorageProvider from '../State/CentralStorage/CentralStorageProvider';
10
- import PathProvider from '../State/Path/PathProvider';
11
-
12
- export interface EcomSettings {
13
- url: string;
14
- useBankId?: boolean;
15
- displayBankIdAlert?: boolean;
16
- serviceLogotypeUrl?: string;
17
- bankIdThumbprint?: string;
18
- }
19
-
20
- export interface WaykeItemProviderSettings {
21
- url: string;
22
- urlMlt?: string;
23
- graphQlUrl: string;
24
- apiKey?: string;
25
- ecomSettings?: EcomSettings;
26
- googleMapsApiKey?: string;
27
- googleMapsMarker?: string;
28
- }
29
-
30
- export type WaykeItemProviderProps = WaykeItemProviderSettings & {
31
- children?: React.ReactNode;
32
- };
33
-
34
- const WaykeItemProvider = ({
35
- url,
36
- urlMlt,
37
- apiKey,
38
- ecomSettings,
39
- graphQlUrl,
40
- googleMapsApiKey,
41
- googleMapsMarker,
42
- children,
43
- }: WaykeItemProviderProps) => (
44
- <PathProvider>
45
- <SettingsProvider
46
- googleMapsApiKey={googleMapsApiKey}
47
- googleMapsMarker={googleMapsMarker}
48
- ecomSettings={ecomSettings}
49
- >
50
- <CentralStorageProvider>
51
- <GraphqlProvider uri={graphQlUrl}>
52
- <RelatedSearchProvider url={url} urlMlt={urlMlt} apiKey={apiKey}>
53
- <Theme>
54
- <Root>{children}</Root>
55
- </Theme>
56
- </RelatedSearchProvider>
57
- </GraphqlProvider>
58
- </CentralStorageProvider>
59
- </SettingsProvider>
60
- </PathProvider>
61
- );
62
-
63
- export default WaykeItemProvider;