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

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 (278) hide show
  1. package/dist/index.js +5529 -5460
  2. package/dist/index.js.map +4 -4
  3. package/dist/index.mjs +320 -257
  4. package/dist/index.mjs.map +2 -2
  5. package/package.json +4 -2
  6. package/.editorconfig +0 -10
  7. package/.eslintrc.js +0 -62
  8. package/.github/workflows/release-to-production.yaml +0 -40
  9. package/.github/workflows/release-to-test.yaml +0 -40
  10. package/.prettierrc +0 -12
  11. package/assets/ajax-loader.gif +0 -0
  12. package/assets/default.css +0 -1
  13. package/assets/fonts/slick.eot +0 -0
  14. package/assets/fonts/slick.svg +0 -14
  15. package/assets/fonts/slick.ttf +0 -0
  16. package/assets/fonts/slick.woff +0 -0
  17. package/codegen.yml +0 -19
  18. package/esbuild/build.js +0 -39
  19. package/esbuild/common.js +0 -15
  20. package/esbuild/start.js +0 -21
  21. package/esbuild/www/index.html +0 -32
  22. package/example/src/@types/global.d.ts +0 -7
  23. package/example/src/@types/react-panellum.d.ts +0 -1
  24. package/example/src/App.tsx +0 -77
  25. package/example/src/assets/style/ecom.css +0 -63
  26. package/example/src/assets/style/theme.css +0 -83
  27. package/example/src/index.html +0 -26
  28. package/example/src/index.tsx +0 -11
  29. package/example/src/routes/HashRoute/index.tsx +0 -30
  30. package/example/src/routes/Home/index.tsx +0 -33
  31. package/example/src/routes/NotFound/index.tsx +0 -5
  32. package/example/src/routes/PathRoute/index.tsx +0 -35
  33. package/example/src/routes/Search/index.tsx +0 -28
  34. package/example/src/routes/SearchItem/index.tsx +0 -28
  35. package/example/src/routes/index.tsx +0 -25
  36. package/src/@types/action.ts +0 -3
  37. package/src/@types/codegen/types.ts +0 -366
  38. package/src/@types/filter.ts +0 -18
  39. package/src/@types/queryFilter.ts +0 -5
  40. package/src/@types/react-panellum.d.ts +0 -1
  41. package/src/@types/search.ts +0 -118
  42. package/src/@types/theme.d.ts +0 -5
  43. package/src/@types/vehicle-properties.ts +0 -33
  44. package/src/State/CentralStorage/CentralStorageContext.ts +0 -10
  45. package/src/State/CentralStorage/CentralStorageProvider.tsx +0 -21
  46. package/src/State/CentralStorage/useCentralStorage.ts +0 -37
  47. package/src/State/Path/PathContext.ts +0 -11
  48. package/src/State/Path/PathProvider.tsx +0 -66
  49. package/src/State/Path/reducer.ts +0 -30
  50. package/src/State/Path/usePath.ts +0 -13
  51. package/src/State/RelatedSearch/RelatedSearchContext.ts +0 -18
  52. package/src/State/RelatedSearch/RelatedSearchProvider.tsx +0 -55
  53. package/src/State/RelatedSearch/useRelatedSearch.ts +0 -20
  54. package/src/State/Search/SearchContext.ts +0 -27
  55. package/src/State/Search/SearchProvider.tsx +0 -243
  56. package/src/State/Search/useSearch.ts +0 -6
  57. package/src/State/Settings/SettingsContext.ts +0 -15
  58. package/src/State/Settings/SettingsProvider.tsx +0 -23
  59. package/src/State/Settings/useSettings.ts +0 -7
  60. package/src/components/Accordion/index.tsx +0 -57
  61. package/src/components/Accordion/wrapper.tsx +0 -107
  62. package/src/components/ActionList/index.tsx +0 -48
  63. package/src/components/ActionList/toggle-item.tsx +0 -59
  64. package/src/components/Avatar/index.tsx +0 -12
  65. package/src/components/Avatar/wrapper.tsx +0 -21
  66. package/src/components/Badge/index.tsx +0 -12
  67. package/src/components/Badge/wrapper.tsx +0 -32
  68. package/src/components/Blockquote/index.tsx +0 -32
  69. package/src/components/Blockquote/wrapper.tsx +0 -52
  70. package/src/components/Button/index.tsx +0 -226
  71. package/src/components/CheckMarkList/index.tsx +0 -21
  72. package/src/components/CheckMarkList/wrapper.tsx +0 -31
  73. package/src/components/Checklist/index.tsx +0 -51
  74. package/src/components/Checklist/wrapper.tsx +0 -65
  75. package/src/components/ColorSelect/index.tsx +0 -63
  76. package/src/components/ColorSelect/wrapper.tsx +0 -82
  77. package/src/components/ColumnRow/index.tsx +0 -20
  78. package/src/components/Container/index.tsx +0 -11
  79. package/src/components/Container/wrapper.tsx +0 -14
  80. package/src/components/Content/index.tsx +0 -15
  81. package/src/components/Content/wrapper.tsx +0 -61
  82. package/src/components/ContentLogo/index.tsx +0 -27
  83. package/src/components/DataList/index.tsx +0 -25
  84. package/src/components/DataList/wrapper.tsx +0 -29
  85. package/src/components/DetailBox/index.tsx +0 -34
  86. package/src/components/DetailBox/wrapper.tsx +0 -34
  87. package/src/components/ExtendContent/index.tsx +0 -43
  88. package/src/components/ExtendContent/wrapper.tsx +0 -41
  89. package/src/components/ExtendInfo/index.tsx +0 -32
  90. package/src/components/ExtendInfo/wrapper.tsx +0 -63
  91. package/src/components/Filter/index.tsx +0 -108
  92. package/src/components/Filter/wrapper.tsx +0 -79
  93. package/src/components/FilterPanel/checkListFacet.tsx +0 -46
  94. package/src/components/FilterPanel/colorFacet.tsx +0 -47
  95. package/src/components/FilterPanel/faceSelector.tsx +0 -53
  96. package/src/components/FilterPanel/index.tsx +0 -79
  97. package/src/components/FilterPanel/rangeFacet.tsx +0 -128
  98. package/src/components/FinancialOptions/LoanModal.tsx +0 -223
  99. package/src/components/FinancialOptions/index.tsx +0 -29
  100. package/src/components/FinancialOptions/leasing.tsx +0 -77
  101. package/src/components/FinancialOptions/loan.tsx +0 -87
  102. package/src/components/Gallery/MediaButton.tsx +0 -19
  103. package/src/components/Gallery/index.tsx +0 -227
  104. package/src/components/Gallery/wrapper.tsx +0 -323
  105. package/src/components/Grid/index.tsx +0 -87
  106. package/src/components/Grid/wrapper.tsx +0 -30
  107. package/src/components/Heading/index.tsx +0 -72
  108. package/src/components/Icon/index.tsx +0 -87
  109. package/src/components/InputCheckbox/index.tsx +0 -30
  110. package/src/components/InputCheckbox/wrapper.tsx +0 -87
  111. package/src/components/InputGroup/index.tsx +0 -24
  112. package/src/components/InputLabel/index.tsx +0 -14
  113. package/src/components/InputLabel/wrapper.tsx +0 -10
  114. package/src/components/InputSearch/index.tsx +0 -51
  115. package/src/components/InputSearch/wrapper.tsx +0 -97
  116. package/src/components/InputSelect/index.tsx +0 -35
  117. package/src/components/InputSelect/wrapper.tsx +0 -59
  118. package/src/components/InputText/index.tsx +0 -27
  119. package/src/components/InputText/wrapper.tsx +0 -57
  120. package/src/components/InsuranceOptions/Insurance.tsx +0 -60
  121. package/src/components/InsuranceOptions/InsuranceFree.tsx +0 -59
  122. package/src/components/InsuranceOptions/InsuranceFreeModal.tsx +0 -49
  123. package/src/components/InsuranceOptions/InsuranceModal.tsx +0 -253
  124. package/src/components/InsuranceOptions/index.tsx +0 -27
  125. package/src/components/Lightbox/index.tsx +0 -51
  126. package/src/components/Lightbox/wrapper.tsx +0 -97
  127. package/src/components/Loader/index.tsx +0 -18
  128. package/src/components/Loader/wrapper.tsx +0 -50
  129. package/src/components/LogoBox/index.tsx +0 -22
  130. package/src/components/LogoBox/wrapper.tsx +0 -19
  131. package/src/components/Map/index.tsx +0 -62
  132. package/src/components/Map/wrapper.tsx +0 -29
  133. package/src/components/Modal/index.tsx +0 -51
  134. package/src/components/Modal/wrapper.tsx +0 -127
  135. package/src/components/OpeningHours/index.tsx +0 -145
  136. package/src/components/OptionBox/index.tsx +0 -23
  137. package/src/components/OptionBox/wrapper.tsx +0 -56
  138. package/src/components/OverflowBox/index.tsx +0 -11
  139. package/src/components/OverflowBox/wrapper.tsx +0 -7
  140. package/src/components/OverflowGrid/index.tsx +0 -70
  141. package/src/components/Page/index.tsx +0 -46
  142. package/src/components/Panel/index.tsx +0 -50
  143. package/src/components/Panel/wrapper.tsx +0 -155
  144. package/src/components/Pdf/index.tsx +0 -46
  145. package/src/components/Pdf/wrapper.tsx +0 -61
  146. package/src/components/PhoneNumber/index.tsx +0 -33
  147. package/src/components/Portal/index.ts +0 -5
  148. package/src/components/Portal/portal-element.tsx +0 -9
  149. package/src/components/Portal/portal-namespace.ts +0 -1
  150. package/src/components/Portal/portal.tsx +0 -36
  151. package/src/components/Price/index.tsx +0 -12
  152. package/src/components/PriceTable/index.tsx +0 -34
  153. package/src/components/PriceTable/wrapper.tsx +0 -27
  154. package/src/components/ProductCard/index.tsx +0 -133
  155. package/src/components/ProductCard/wrapper.tsx +0 -147
  156. package/src/components/ProductPage/index.tsx +0 -99
  157. package/src/components/ProgressBar/index.tsx +0 -31
  158. package/src/components/ProgressBar/wrapper.tsx +0 -29
  159. package/src/components/RangeSlider/RangeSliderSimple.tsx +0 -90
  160. package/src/components/RangeSlider/SliderWithLabel.tsx +0 -62
  161. package/src/components/RangeSlider/handle.tsx +0 -26
  162. package/src/components/RangeSlider/index.tsx +0 -132
  163. package/src/components/RangeSlider/track.tsx +0 -19
  164. package/src/components/RangeSlider/wrapper.tsx +0 -93
  165. package/src/components/RangeSliderLabel/index.tsx +0 -18
  166. package/src/components/RangeSliderLabel/wrapper.tsx +0 -33
  167. package/src/components/Repeat/index.tsx +0 -21
  168. package/src/components/Result/index.tsx +0 -91
  169. package/src/components/Result/wrapper.tsx +0 -39
  170. package/src/components/Root/index.tsx +0 -24
  171. package/src/components/SearchBar/index.tsx +0 -48
  172. package/src/components/SearchFilter/index.tsx +0 -31
  173. package/src/components/SearchTerm/index.tsx +0 -23
  174. package/src/components/SearchTerm/wrapper.tsx +0 -71
  175. package/src/components/SectionHeader/index.tsx +0 -25
  176. package/src/components/SectionHeader/wrapper.tsx +0 -17
  177. package/src/components/Snackbar/index.tsx +0 -35
  178. package/src/components/Snackbar/wrapper.tsx +0 -65
  179. package/src/components/SortSelect/index.tsx +0 -35
  180. package/src/components/SortSelect/wrapper.tsx +0 -54
  181. package/src/components/Sphere/Sphere.tsx +0 -49
  182. package/src/components/Sphere/SphereLightbox.tsx +0 -10
  183. package/src/components/Sphere/SphereViewer.tsx +0 -81
  184. package/src/components/Sphere/wrapper.tsx +0 -253
  185. package/src/components/SrOnly/index.tsx +0 -14
  186. package/src/components/SwitchBar/index.tsx +0 -55
  187. package/src/components/SwitchBar/wrapper.tsx +0 -80
  188. package/src/components/TableColumn/index.tsx +0 -18
  189. package/src/components/TableList/index.tsx +0 -39
  190. package/src/components/Tabs/index.tsx +0 -34
  191. package/src/components/Tabs/wrapper.tsx +0 -82
  192. package/src/components/ThreeSixty/Rotation.tsx +0 -136
  193. package/src/components/ThreeSixty/ThreeSixtLightbox.tsx +0 -34
  194. package/src/components/ThreeSixty/ThreeSixty.tsx +0 -53
  195. package/src/components/UspList/index.tsx +0 -47
  196. package/src/components/UspList/wrapper.tsx +0 -92
  197. package/src/components/Utility/index.tsx +0 -17
  198. package/src/components/Video/CustomPlayer.tsx +0 -28
  199. package/src/components/Video/EmbeddedVideoLightbox.tsx +0 -31
  200. package/src/components/Video/EmbededVideo.tsx +0 -72
  201. package/src/components/Video/QuickNavEmbeded.tsx +0 -35
  202. package/src/components/Video/QuickNavVideo.tsx +0 -14
  203. package/src/components/Video/Video.tsx +0 -18
  204. package/src/components/Video/VimeoPlayer.tsx +0 -21
  205. package/src/components/Video/YoutubePlayer.tsx +0 -21
  206. package/src/components/Video/useThumbnail.ts +0 -28
  207. package/src/components/Video/utils.ts +0 -47
  208. package/src/components/Video/wrapper.tsx +0 -29
  209. package/src/hooks/useFetch.ts +0 -88
  210. package/src/hooks/useHasBeenVisible.ts +0 -17
  211. package/src/hooks/useHashGuid.ts +0 -33
  212. package/src/hooks/useInsurance.ts +0 -22
  213. package/src/hooks/useLoan.ts +0 -21
  214. package/src/hooks/useOnScreen.ts +0 -20
  215. package/src/hooks/useOutsideClick.ts +0 -19
  216. package/src/hooks/usePrevious.ts +0 -11
  217. package/src/hooks/useSearchItem.ts +0 -11
  218. package/src/hooks/useSearchItemBranch.ts +0 -14
  219. package/src/hooks/useSessionStorage.ts +0 -32
  220. package/src/hooks/useVimeoThumbnail.ts +0 -31
  221. package/src/images/map/marker.png +0 -0
  222. package/src/images/placeholders/staticmap.jpg +0 -0
  223. package/src/index-dev.tsx +0 -42
  224. package/src/index-esbuild.ts +0 -74
  225. package/src/index.ts +0 -72
  226. package/src/layout/helpers.tsx +0 -6
  227. package/src/layout/keyframes.tsx +0 -23
  228. package/src/layout/theme.ts +0 -60
  229. package/src/layouts/WaykeComposite.tsx +0 -64
  230. package/src/layouts/WaykeCompositeWithProvider.tsx +0 -17
  231. package/src/layouts/search/index.tsx +0 -124
  232. package/src/layouts/searchItem/Branch.tsx +0 -97
  233. package/src/layouts/searchItem/BranchModal.tsx +0 -67
  234. package/src/layouts/searchItem/CheckList.tsx +0 -146
  235. package/src/layouts/searchItem/ManufacturerPackagesOption.tsx +0 -54
  236. package/src/layouts/searchItem/MetadataItem.tsx +0 -74
  237. package/src/layouts/searchItem/PackageOptionModal.tsx +0 -54
  238. package/src/layouts/searchItem/PackageOptions.tsx +0 -58
  239. package/src/layouts/searchItem/Page404.tsx +0 -17
  240. package/src/layouts/searchItem/PageLoading.tsx +0 -17
  241. package/src/layouts/searchItem/Property.tsx +0 -134
  242. package/src/layouts/searchItem/Related.tsx +0 -120
  243. package/src/layouts/searchItem/index.tsx +0 -342
  244. package/src/providers/WaykeItemProvidet.tsx +0 -63
  245. package/src/providers/WaykeProvider.tsx +0 -75
  246. package/src/providers/graphqlProvider.tsx +0 -9
  247. package/src/providers/themeProvider.tsx +0 -15
  248. package/src/queries/INSURANCE_CALCULATION.ts +0 -43
  249. package/src/queries/LOAN_CALCULATION.ts +0 -39
  250. package/src/queries/SEARCH_ITEM_BRANCH_QUERY.ts +0 -120
  251. package/src/queries/SEARCH_ITEM_QUERY.ts +0 -237
  252. package/src/utils/constants.ts +0 -34
  253. package/src/utils/converters.ts +0 -45
  254. package/src/utils/deep-copy.ts +0 -6
  255. package/src/utils/formats.ts +0 -83
  256. package/src/utils/metadata.min.ts +0 -87
  257. package/src/utils/phonenumbers.ts +0 -17
  258. package/src/utils/pubsub/Actions.ts +0 -20
  259. package/src/utils/pubsub/Events.ts +0 -79
  260. package/src/utils/pubsub/pubsub.ts +0 -151
  261. package/src/utils/regex.ts +0 -13
  262. package/src/utils/sortOptions.ts +0 -36
  263. package/src/utils/specification.ts +0 -581
  264. package/src/utils/ssn.ts +0 -1
  265. package/src/utils/url.ts +0 -1
  266. package/src/utils/vehicle-properties/compare-basic-properties.ts +0 -63
  267. package/src/utils/vehicle-properties/compare-categories.ts +0 -45
  268. package/src/utils/vehicle-properties/compare-properties.ts +0 -5
  269. package/src/utils/vehicle-properties/custom-property-adder.ts +0 -163
  270. package/src/utils/vehicle-properties/property-hint-enricher.ts +0 -230
  271. package/src/utils/vehicle-properties/property-remover.ts +0 -28
  272. package/src/utils/vehicle-properties/property-tree-creator.ts +0 -171
  273. package/src/utils/vehicle-properties/property-tree-sorter.ts +0 -20
  274. package/tsconfig.build.json +0 -10
  275. package/tsconfig.eslint.json +0 -11
  276. package/tsconfig.json +0 -18
  277. package/webpack.analyze.js +0 -10
  278. 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
- };