@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,581 +0,0 @@
1
- import { notEmpty, dateTimeFormat, numberSeparator } from './formats';
2
- import { VehicleData } from '../@types/codegen/types';
3
-
4
- export interface ItemPropertModalType {
5
- title: string;
6
- text: string;
7
- }
8
-
9
- export interface ItemPropertyType {
10
- label: string;
11
- value: string | null;
12
- modal?: ItemPropertModalType;
13
- }
14
-
15
- type ValueTypes =
16
- | number
17
- | string
18
- | null
19
- | undefined
20
- | string[]
21
- | boolean
22
- | { [key: string]: string | number | boolean };
23
-
24
- export interface SpecPropertyType {
25
- label?: string;
26
- formatLabel?: (item: VehicleData) => string;
27
- formatData?: (value: ValueTypes, item: VehicleData) => string | null;
28
- modal?: {
29
- title?: string;
30
- dynamicTitle?: (item: VehicleData) => string;
31
- text?: string;
32
- dynamicText?: (item: VehicleData) => string;
33
- nonConcatablePropValue?: string;
34
- concatPropValue?: string;
35
- };
36
- }
37
-
38
- const isElectric = (item: VehicleData): boolean =>
39
- !!item.fuelType && item.fuelType.toLowerCase() === 'el';
40
- const getFuelConsumption = (value: ValueTypes, item: VehicleData): string | null => {
41
- if (!value) return null;
42
-
43
- return isElectric(item) ? `${value} kWh/100 km` : `${value} liter/100 km`;
44
- };
45
-
46
- const specLabels: { [key: string]: SpecPropertyType } = {
47
- manufacturer: { label: 'Varumärke' },
48
- manufactureYear: {
49
- label: 'Tillverkningsår',
50
- modal: {
51
- title: 'Tillverkningsår',
52
- text: 'Året bilen tillverkades.',
53
- },
54
- },
55
- modelSeries: { label: 'Modell' },
56
- modelName: {
57
- label: 'Version',
58
- modal: {
59
- title: 'Version',
60
- text: 'Vilket utförande av bilmodellen det är.',
61
- },
62
- },
63
- modelYear: {
64
- label: 'Modellår',
65
- modal: {
66
- title: 'Modellår',
67
- text: 'Modellår sätts av tillverkaren. Handlaren ändrar ibland modellåret för att matcha transportstyrelsens definition för <i>årsmodell</i>. Definitionen för årsmodell innebär att bilar tillverkade andra halvan av året får nästa års modellår.',
68
- },
69
- },
70
- mileage: {
71
- label: 'Mätarställning',
72
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
73
- (value || -1) >= 0 ? `${numberSeparator(value as number)} mil` : null,
74
- modal: {
75
- title: 'Mätarställning',
76
- text: 'Antal mil som bilen har körts. I bilen anges det i kilometer istället.',
77
- },
78
- },
79
- registrationNumber: {
80
- label: 'Registreringsnummer',
81
- },
82
- vinNumber: { label: 'Chassinummer/VIN' },
83
- chassis: {
84
- label: 'Kaross',
85
- modal: {
86
- title: 'Kaross',
87
- text: 'Vilken typ/form bilen har. ',
88
- },
89
- },
90
- colorName: { label: 'Färg' },
91
- enginePower: {
92
- label: 'Effekt',
93
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
94
- value ? `${value} hk` : null,
95
- },
96
- engineCylinders: {
97
- label: 'Cylindrar',
98
- modal: {
99
- title: 'Cylindrar',
100
- text: 'Antalet ger en indikation på motorns storlek. Ett "vanligt" antal ligger på 4 st.',
101
- },
102
- },
103
- engineVolume: {
104
- label: 'Motorvolym',
105
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
106
- value ? `${value} cm3` : null,
107
- modal: {
108
- title: 'Motorvolym',
109
- text: 'Den sammanlagda volymen av motorns cylindrar. Mäts i kubikcentimeter.',
110
- },
111
- },
112
- maxSpeed: {
113
- label: 'Toppfart',
114
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
115
- value ? `${value} km/h` : null,
116
- modal: {
117
- title: 'Toppfart',
118
- text: 'Högsta hastigheten som bilen går att köra.',
119
- },
120
- },
121
- drivingWheel: {
122
- label: 'Drivhjul',
123
- modal: {
124
- title: 'Drivhjul',
125
- text: 'Vilka hjul som motorn ger kraft till och snurrar.',
126
- },
127
- },
128
- torque: {
129
- label: 'Vridmoment',
130
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
131
- value ? `${value} Nm` : null,
132
- modal: {
133
- title: 'Vridmoment',
134
- text: 'Bilens vridkraft. Hög siffra möjliggör att t.ex. dra tunga släp. Dieselmotorer har generellt mer vridmoment.',
135
- },
136
- },
137
- acceleration: {
138
- label: 'Acceleration 0-100 km/h',
139
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
140
- value ? `${value} sek` : null,
141
- modal: {
142
- title: 'Acceleration 0-100 km/h',
143
- text: 'Antal sekunder som bilen behöver för att ta sig till 100 km/h.',
144
- },
145
- },
146
- gearbox: { label: 'Växellåda' },
147
- gearboxType: { label: 'Växellåda' },
148
- fuelType: {
149
- label: 'Bränslegrupp',
150
- modal: {
151
- title: 'Bränslegrupp',
152
- text: 'Vad bilen ska tankas med och drivs av.',
153
- },
154
- },
155
- seats: {
156
- label: 'Säten',
157
- modal: {
158
- title: 'Säten',
159
- text: 'Antal personer som får åka i bilen.',
160
- },
161
- },
162
- segment: {
163
- label: 'Segment',
164
- modal: {
165
- title: 'Segment',
166
- text: 'Vilken typ av bil det handlar om - t.ex. familjebil',
167
- },
168
- },
169
- status: { label: 'Status' },
170
- imported: {
171
- label: 'Import/införsel',
172
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
173
- },
174
- firstRegistrationDate: {
175
- label: 'Först registrerad',
176
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
177
- value ? dateTimeFormat.format(`${value}`, dateTimeFormat.YearMonth) : null,
178
- },
179
- firstInService: {
180
- label: 'Först i trafik',
181
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
182
- value ? dateTimeFormat.format(`${value}`, dateTimeFormat.YearMonth) : null,
183
- },
184
- height: {
185
- label: 'Längd/höjd/bredd',
186
- formatData: (_: ValueTypes, data: VehicleData): string | null =>
187
- `${data?.properties?.length || '-'} cm/${data?.properties?.height || '-'} cm/${
188
- data?.properties?.width || '-'
189
- } cm`,
190
- },
191
- serviceWeight: {
192
- label: 'Tjänstevikt',
193
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
194
- value ? `${numberSeparator(value as number)} kg` : null,
195
- modal: {
196
- title: 'Tjänstevikt',
197
- text: 'Anger hur mycket bilen väger med en passagerare som väger ca 75kg.',
198
- },
199
- },
200
- maxTotalWeight: {
201
- label: 'Maxlast',
202
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
203
- value ? `${numberSeparator(value as number)} kg` : null,
204
- },
205
- maxRoofWeight: {
206
- label: 'Max taklast',
207
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
208
- value ? `${numberSeparator(value as number)} kg` : null,
209
- modal: {
210
- title: 'Max taklast',
211
- text: 'Hur många kilo last taket klarar av.',
212
- },
213
- },
214
- trailerWeight: {
215
- label: 'Max släpvagnsvikt',
216
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
217
- value ? `${numberSeparator(value as number)} kg` : null,
218
- },
219
- trailerTotalWeightB: {
220
- label: 'Totalvikt släp, B',
221
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
222
- value ? `${numberSeparator(value as number)} kg` : null,
223
- modal: {
224
- title: 'Totalvikt släp, B',
225
- text: 'Vikten man får dra med släp och ett vanligt B-körkort',
226
- },
227
- },
228
- trailerTotalWeightBPlus: {
229
- label: 'Totalvikt släp, B+',
230
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
231
- value ? `${numberSeparator(value as number)} kg` : null,
232
- modal: {
233
- title: 'Totalvikt släp, B+',
234
- text: 'Vikten man får dra med släp och ett utökat B-körkort',
235
- },
236
- },
237
- groundClearence: {
238
- label: 'Markfrigång',
239
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
240
- value ? `${value} cm` : null,
241
- modal: {
242
- title: 'Markfrigång',
243
- text: 'Avståndet mellan bilens undersida och marken.',
244
- },
245
- },
246
- trunkSpace: {
247
- label: 'Bagageutrymme - normalt',
248
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
249
- value ? `${value} liter` : null,
250
- modal: {
251
- title: 'Bagageutrymme - normalt',
252
- text: 'Volym på bagageutrymmet med uppfällda säten. Det mäts i liter.',
253
- },
254
- },
255
- tankVolume: {
256
- formatLabel: (item: VehicleData): string =>
257
- isElectric(item) ? 'Batterikapacitet' : 'Volym, bränsletank',
258
- formatData: (value: ValueTypes, data: VehicleData): string | null => {
259
- if (!value) return null;
260
-
261
- return isElectric(data) ? `${value} kWh` : `${value} liter`;
262
- },
263
-
264
- modal: {
265
- dynamicTitle: (item: VehicleData): string =>
266
- isElectric(item) ? 'Batterikapacitet' : 'Volym, bränsletank',
267
- dynamicText: (item: VehicleData): string =>
268
- isElectric(item)
269
- ? 'Batteriets kapacitet i kilowattimmar'
270
- : 'Antal liter bränsle som ryms i tanken.',
271
- },
272
- },
273
- wheelBase: {
274
- label: 'Hjulbas',
275
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
276
- value ? `${value} cm` : null,
277
- modal: {
278
- title: 'Hjulbas',
279
- text: 'Avståndet mellan fram- och bakhjul.',
280
- },
281
- },
282
- tiresFront: { label: 'Däck, fram' },
283
- tiresRear: { label: 'Däck, bak' },
284
- drivingNoise: { label: 'Ljudnivå' },
285
- payload: { label: 'Godsvikt' },
286
- trailerWeightWithoutBreaks: { label: 'Totalvikt släp, utan bromsar' },
287
- co2: {
288
- label: 'CO2',
289
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
290
- value ? `${value} g/km` : null,
291
- modal: {
292
- title: 'C02',
293
- text: 'Anger hur mycket koldioxid fordonet släpper ut.',
294
- },
295
- },
296
- environmentClass: {
297
- label: 'Miljöklass',
298
- modal: {
299
- title: 'Miljöklass',
300
- text: 'Används för att ställa krav på fordonets utsläpp.',
301
- },
302
- },
303
- vehicleCategoryEU: { label: 'EU-kategori' },
304
- fuelConsumptionMixedDriving: {
305
- label: 'Bränsleförbrukning, blandad',
306
- formatData: getFuelConsumption,
307
- modal: {
308
- title: 'Bränsleförbrukning, blandad',
309
- text: 'Bränsleförbrukning vid blandad körning. Dvs. stadskörning och landsvägskörning under en och samma färd.',
310
- },
311
- },
312
- fuelConsumptionCityDriving: {
313
- label: 'Bränsleförbrukning, stad',
314
- formatData: getFuelConsumption,
315
- modal: {
316
- title: 'Bränsleförbrukning, stad',
317
- text: 'Bränsleförbrukning vid stadskörning.',
318
- },
319
- },
320
- fuelConsumptionCountryRoadDriving: {
321
- label: 'Bränsleförbrukning, landsväg',
322
- formatData: getFuelConsumption,
323
- modal: {
324
- title: 'Bränsleförbrukning, landsväg',
325
- text: 'Bränsleförbrukning vid landsvägskörning.',
326
- },
327
- },
328
- nox: { label: 'Nox' },
329
- thcNox: { label: 'THC Nox' },
330
- ncapStar: {
331
- label: 'Euro NCAP stjärnor',
332
- modal: {
333
- title: 'Euro NCAP stjärnor',
334
- text: 'Universiellt säkerhetsbetyg, fler stjärnor innebär högre säkerhet.',
335
- },
336
- },
337
- ncapYear: {
338
- label: 'Testår',
339
- modal: {
340
- title: 'Testår',
341
- text: 'Året som bilen säkerhets- och krocktestades.',
342
- },
343
- },
344
- ncapMonth: { label: 'Testmånad' },
345
- abs: {
346
- label: 'ABS',
347
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
348
- modal: {
349
- title: 'ABS',
350
- text: 'Förhindrar att bromsarna låser sig och reducerar bromssträckan.',
351
- },
352
- },
353
- espSystem: {
354
- label: 'Antisladd (ESP/DSTC/VSC/ASC)',
355
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
356
- },
357
- trcSystem: {
358
- label: 'Antispinn',
359
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
360
- modal: {
361
- title: 'Antispinn',
362
- text: 'Får bilen att skicka kraft till hjulet som har bästa kontakt med underlaget.',
363
- },
364
- },
365
- isofixRearSeat: {
366
- label: 'Isofix bak',
367
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
368
- modal: {
369
- title: 'Isofix bak',
370
- text: 'Universiell fästanordning för barnstolar.',
371
- },
372
- },
373
- airbagDriver: {
374
- label: 'Airbag, förare',
375
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
376
- modal: {
377
- title: 'Airbag, förare',
378
- text: 'Krockkudde för föraren.',
379
- },
380
- },
381
- airbagPassenger: {
382
- label: 'Airbag, passagerare',
383
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
384
- modal: {
385
- title: 'Airbag, passagerare',
386
- text: 'Krockkudde för passagerare.',
387
- },
388
- },
389
- airbagFrontSide: {
390
- label: 'Airbag, sida fram',
391
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
392
- },
393
- brakeAssistance: {
394
- label: 'Bromsassistans (Panikbroms - BA/EBA/BAS/AFU)',
395
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
396
- modal: {
397
- title: 'Bromsassistans (Panikbroms - BA/EBA/BAS/AFU)',
398
- text: 'Säkerhetssystem som kan hjälpa till att bromsa och undvika olyckor. ',
399
- },
400
- },
401
- tco3yrs: {
402
- label: 'TCO, 3 år 2500 mil/år',
403
- formatData: (value: ValueTypes, _: VehicleData): string | null => (value ? 'Ja' : null),
404
- },
405
- annualTax: {
406
- label: 'Skatt',
407
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
408
- value ? `${value} kr/år` : null,
409
- modal: {
410
- title: 'Skatt',
411
- text: 'Summan fordonsskatt som måste betalas varje år.',
412
- },
413
- },
414
- annualMalus: {
415
- label: 'Skatt (Malus)',
416
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
417
- value ? `${value} kr/år` : null,
418
- modal: {
419
- title: 'Malus - förhöjd fordonsskatt',
420
- text: 'Bilen har en förhöjd skatt de tre första åren och därefter gäller ordinarie skatt på {insertValue}.',
421
- nonConcatablePropValue:
422
- 'Bilen har en förhöjd skatt de tre första åren och därefter gäller ordinarie skatt.',
423
- concatPropValue: 'annualTax',
424
- },
425
- },
426
- annualBonus: {
427
- label: 'Bonus',
428
- formatData: (value: ValueTypes, _: VehicleData): string | null =>
429
- value ? `${value} kr` : null,
430
- modal: {
431
- title: 'Bonus - för nya bilar med låga utsläpp',
432
- text: 'Det här fordonet är berättigat till klimatbonus. Bonusen för denna bil är {annualBonus} och delas ut till den första registrerade ägaren efter 6 månader. Klicka <a target="_blank" rel="noopener noreferrer" title="Läs mer om bonus/malus" href="https://www.transportstyrelsen.se/bonusmalus">här</a> för att läsa mer.',
433
- concatPropValue: 'annualBonus',
434
- },
435
- },
436
- };
437
-
438
- const All = [
439
- 'manufacturer',
440
- 'modelSeries',
441
- 'modelName',
442
- 'manufactureYear',
443
- 'mileage',
444
- 'gearboxType',
445
- 'enginePower',
446
- 'drivingWheel',
447
- 'fuelType',
448
- 'seats',
449
- 'colorName',
450
- 'registrationNumber',
451
- 'chassis',
452
- 'engineCylinders',
453
- 'engineVolume',
454
- 'maxSpeed',
455
- 'torque',
456
- 'acceleration',
457
- 'modelYear',
458
- 'vinNumber',
459
- 'segment',
460
- 'status',
461
- 'imported',
462
- 'firstRegistrationDate',
463
- 'firstInService',
464
- 'height',
465
- 'serviceWeight',
466
- 'maxTotalWeight',
467
- 'maxRoofWeight',
468
- 'trailerWeight',
469
- 'trailerTotalWeightB',
470
- 'trailerTotalWeightBPlus',
471
- 'groundClearence',
472
- 'trunkSpace',
473
- 'tankVolume',
474
- 'wheelBase',
475
- 'tiresFront',
476
- 'tiresRear',
477
- 'drivingNoise',
478
- 'payload',
479
- 'trailerWeightWithoutBreaks',
480
- 'co2',
481
- 'environmentClass',
482
- 'vehicleCategoryEU',
483
- 'fuelConsumptionMixedDriving',
484
- 'fuelConsumptionCityDriving',
485
- 'fuelConsumptionCountryRoadDriving',
486
- 'nox',
487
- 'thcNox',
488
- 'ncapStar',
489
- 'ncapYear',
490
- 'ncapMonth',
491
- 'abs',
492
- 'espSystem',
493
- 'trcSystem',
494
- 'isofixRearSeat',
495
- 'airbagDriver',
496
- 'airbagPassenger',
497
- 'airbagFrontSide',
498
- 'brakeAssistance',
499
- 'tco3yrs',
500
- 'annualTax',
501
- 'annualMalus',
502
- 'annualBonus',
503
- ] as const;
504
-
505
- type KEYS = typeof All[number];
506
- type ITEM_KEYS = keyof VehicleData;
507
-
508
- const extractSpecData = (key: KEYS, item: VehicleData): ItemPropertyType | null => {
509
- const spec = specLabels[key];
510
- let data:
511
- | number
512
- | string
513
- | null
514
- | undefined
515
- | string[]
516
- | boolean
517
- | { [key: string]: string | number | boolean } = null;
518
-
519
- if (!!item[key as ITEM_KEYS] || (item[key as ITEM_KEYS] || -1) > -1) {
520
- data = item[key as ITEM_KEYS];
521
- } else if (
522
- !!item?.properties?.[key] ||
523
- (typeof item?.properties?.[key] === 'number' && (item?.properties?.[key] || -1) > -1)
524
- ) {
525
- data = item.properties[key];
526
- }
527
-
528
- if (!spec || !data) {
529
- return null;
530
- }
531
-
532
- let label: string = '';
533
- if (spec.formatLabel) {
534
- label = spec.formatLabel(item);
535
- } else if (spec.label) {
536
- label = spec.label;
537
- }
538
-
539
- let value: string | null = '';
540
- if (spec.formatData) {
541
- value = spec.formatData(data, item);
542
- } else {
543
- value = `${data}`;
544
- }
545
-
546
- const modal = spec.modal ? { title: '', text: '' } : undefined;
547
- if (modal) {
548
- if (spec.modal?.dynamicTitle) {
549
- modal.title = spec.modal.dynamicTitle(item);
550
- } else if (spec.modal?.title) {
551
- modal.title = spec.modal.title;
552
- }
553
-
554
- if (spec.modal?.dynamicText) {
555
- modal.text = spec.modal.dynamicText(item);
556
- } else if (spec.modal?.text) {
557
- modal.text = spec.modal.text;
558
- }
559
-
560
- if (spec.modal?.concatPropValue) {
561
- const concatObj =
562
- spec.modal.concatPropValue === key
563
- ? { value }
564
- : extractSpecData(spec.modal.concatPropValue as KEYS, item);
565
- if (concatObj?.value) {
566
- modal.text = modal.text.replace('{insertValue}', concatObj.value);
567
- } else if (spec.modal.nonConcatablePropValue) {
568
- modal.text = spec.modal.nonConcatablePropValue;
569
- }
570
- }
571
- }
572
-
573
- return {
574
- label,
575
- value,
576
- modal,
577
- };
578
- };
579
-
580
- export const getSpecificationList = (item: VehicleData): ItemPropertyType[] =>
581
- All.map((x: KEYS) => extractSpecData(x, item)).filter(notEmpty);
package/src/utils/ssn.ts DELETED
@@ -1 +0,0 @@
1
- export const ssnIsValid = (s?: string) => (s ? /^\d{2,4}\d{2}\d{2}\-?\d{4}$/.test(s) : false);
package/src/utils/url.ts DELETED
@@ -1 +0,0 @@
1
- export const getUrlSearchParamsFromUrl = () => new URLSearchParams(window.location.search);
@@ -1,63 +0,0 @@
1
- import { Property } from '../../@types/vehicle-properties';
2
-
3
- import compareProperties from './compare-properties';
4
-
5
- interface Order {
6
- Varumärke: 1;
7
- Modell: 2;
8
- Version: 3;
9
- Modellår: 4;
10
- Tillverkningsår: 5;
11
- Mätarställning: 6;
12
- Växellåda: 7;
13
- Färg: 8;
14
- Registreringsnummer: 9;
15
- Bränslegrupp: 10;
16
- Kaross: 11;
17
- Segment: 12;
18
- Skatt: 13;
19
- Malus: 14;
20
- Bonus: 15;
21
- }
22
-
23
- const ORDER: Order = Object.freeze({
24
- Varumärke: 1,
25
- Modell: 2,
26
- Version: 3,
27
- Modellår: 4,
28
- Tillverkningsår: 5,
29
- Mätarställning: 6,
30
- Växellåda: 7,
31
- Färg: 8,
32
- Registreringsnummer: 9,
33
- Bränslegrupp: 10,
34
- Kaross: 11,
35
- Segment: 12,
36
- Skatt: 13,
37
- Malus: 14,
38
- Bonus: 15,
39
- });
40
-
41
- type OrderKey = keyof Order;
42
-
43
- const compareByPredefinedOrder = (firstId: string, secondId: string) => {
44
- const firstOrder = ORDER[firstId as OrderKey] || Number.MAX_SAFE_INTEGER;
45
- const secondOrder = ORDER[secondId as OrderKey] || Number.MAX_SAFE_INTEGER;
46
-
47
- if (firstOrder < secondOrder) {
48
- return -1;
49
- } else if (secondOrder < firstOrder) {
50
- return 1;
51
- }
52
- return 0;
53
- };
54
-
55
- export default (first: Property, second: Property) => {
56
- const result = compareByPredefinedOrder(`${first.name}`, `${second.name}`);
57
-
58
- if (result !== 0) {
59
- return result;
60
- }
61
-
62
- return compareProperties(first, second);
63
- };
@@ -1,45 +0,0 @@
1
- import { Category } from '../../@types/vehicle-properties';
2
-
3
- interface ID_ORDER_TYPE {
4
- '1000': 1;
5
- '71': 2;
6
- '2': 3;
7
- '1': 4;
8
- '8': 5;
9
- '6': 6;
10
- '119': 7;
11
- }
12
-
13
- const ID_ORDER: ID_ORDER_TYPE = Object.freeze({
14
- '1000': 1,
15
- '71': 2,
16
- '2': 3,
17
- '1': 4,
18
- '8': 5,
19
- '6': 6,
20
- '119': 7,
21
- });
22
-
23
- type ID_ORDER_KEY = keyof ID_ORDER_TYPE;
24
-
25
- const compareById = (firstId: string, secondId: string) => {
26
- const firstOrder = ID_ORDER[firstId as ID_ORDER_KEY] || Number.MAX_SAFE_INTEGER;
27
- const secondOrder = ID_ORDER[secondId as ID_ORDER_KEY] || Number.MAX_SAFE_INTEGER;
28
-
29
- if (firstOrder < secondOrder) {
30
- return -1;
31
- } else if (secondOrder < firstOrder) {
32
- return 1;
33
- }
34
- return 0;
35
- };
36
-
37
- export default (first: Category, second: Category) => {
38
- const result = compareById(`${first.id}`, `${second.id}`);
39
-
40
- if (result !== 0) {
41
- return result;
42
- }
43
-
44
- return first.name.localeCompare(second.name);
45
- };
@@ -1,5 +0,0 @@
1
- import { Property } from '../../@types/vehicle-properties';
2
-
3
- export default (first: Property, second: Property) => {
4
- return first.name.localeCompare(second.name);
5
- };