@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,48 +0,0 @@
1
- import React, { useCallback, useRef } from 'react';
2
- import InputSearch from '../InputSearch/index';
3
- import useOutsideClick from '../../hooks/useOutsideClick';
4
-
5
- interface SearchBarProps {
6
- value: string;
7
- setValue: (value: string) => void;
8
- onSearch: (value: string) => void;
9
- }
10
-
11
- const SearchBar = ({ value, setValue, onSearch }: SearchBarProps) => {
12
- const ref = useRef<HTMLDivElement>(null);
13
-
14
- const onChange = useCallback(
15
- (e: React.ChangeEvent<HTMLInputElement>) => setValue(e.currentTarget.value),
16
- []
17
- );
18
-
19
- useOutsideClick(ref, () => setValue(''));
20
-
21
- const _onSearch = useCallback(() => {
22
- onSearch(value);
23
- }, [value]);
24
-
25
- const onKeyDown = useCallback(
26
- (e: React.KeyboardEvent<HTMLInputElement>) => {
27
- if (e.keyCode === 13) {
28
- _onSearch();
29
- }
30
- },
31
- [value, _onSearch]
32
- );
33
-
34
- return (
35
- <InputSearch
36
- ref={ref}
37
- value={value}
38
- onChange={onChange}
39
- onKeyDown={onKeyDown}
40
- onSearch={_onSearch}
41
- placeholder="Sök"
42
- label="Sök"
43
- id="main-search"
44
- />
45
- );
46
- };
47
-
48
- export default SearchBar;
@@ -1,31 +0,0 @@
1
- import React, { useCallback, useState } from 'react';
2
- import useSearch from '../../State/Search/useSearch';
3
- import SearchBar from '../SearchBar/index';
4
-
5
- const SearchFilter = () => {
6
- const [value, setValue] = useState('');
7
- const { queryFilter, onFilterUpdate } = useSearch();
8
-
9
- const onSearch = useCallback(
10
- (value: string) => {
11
- const nextQuery = new URLSearchParams(queryFilter.searchParams);
12
- if (value === nextQuery.get('query')) {
13
- return;
14
- }
15
-
16
- if (value) {
17
- nextQuery.set('query', value);
18
- } else {
19
- nextQuery.delete('qquery');
20
- }
21
-
22
- onFilterUpdate(nextQuery.toString());
23
- setValue('');
24
- },
25
- [queryFilter]
26
- );
27
-
28
- return <SearchBar value={value} setValue={setValue} onSearch={onSearch} />;
29
- };
30
-
31
- export default SearchFilter;
@@ -1,23 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Query, Clear } from './wrapper';
4
- import { IconCancel } from '../Icon/index';
5
-
6
- interface Props {
7
- children: string;
8
- onClear?: () => void;
9
- clearTitle?: string;
10
- }
11
-
12
- const SearchTerm = ({ children, onClear, clearTitle }: Props) => (
13
- <Wrapper>
14
- <Query>{children}</Query>
15
- {onClear && (
16
- <Clear onClick={onClear} title={clearTitle ? clearTitle : 'Rensa fritext'}>
17
- <IconCancel block />
18
- </Clear>
19
- )}
20
- </Wrapper>
21
- );
22
-
23
- export default SearchTerm;
@@ -1,71 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import { ButtonReset } from '../Button/index';
5
-
6
- export const Wrapper = styled.div`
7
- display: flex;
8
- align-items: center;
9
- `;
10
-
11
- export const Query = styled.div.attrs(() => ({
12
- className: 'wayke__theme wayke__font--bold',
13
- }))`
14
- font-size: 2.25rem;
15
- min-width: 0;
16
- overflow-wrap: break-word;
17
- hyphens: auto;
18
-
19
- :before,
20
- :after {
21
- content: '"';
22
- }
23
- `;
24
-
25
- export const Clear = styled(ButtonReset)`
26
- position: relative;
27
- display: flex;
28
- align-items: center;
29
- justify-content: center;
30
- width: ${size(2)};
31
- height: ${size(2)};
32
- border-radius: 50%;
33
- background-color: ${(props) => props.theme.color.accentDark};
34
- margin-left: ${size(1)};
35
- font-size: ${size(1)};
36
- transform-origin: 50% 50%;
37
- transition: transform 150ms ease;
38
-
39
- :before {
40
- content: '';
41
- position: absolute;
42
- top: ${size(-1)};
43
- bottom: ${size(-1)};
44
- left: ${size(-1)};
45
- right: ${size(-1)};
46
- border-radius: 50%;
47
- }
48
-
49
- :after {
50
- content: '';
51
- position: absolute;
52
- top: 0;
53
- left: 0;
54
- width: 100%;
55
- height: 100%;
56
- background-color: ${(props) => props.theme.color.hoverOverlay};
57
- border-radius: 50%;
58
- opacity: 0;
59
- transition: opacity 150ms ease;
60
- }
61
-
62
- :hover {
63
- :after {
64
- opacity: 1;
65
- }
66
- }
67
-
68
- :active {
69
- transform: scale(0.95);
70
- }
71
- `;
@@ -1,25 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Heading, Action } from './wrapper';
4
- import { ButtonClear, ButtonContent } from '../Button/index';
5
-
6
- interface Props {
7
- children: React.ReactNode;
8
- onClick?: () => void;
9
- actionTitle?: string;
10
- }
11
-
12
- const SectionHeader = ({ children, onClick, actionTitle }: Props) => (
13
- <Wrapper>
14
- <Heading>{children}</Heading>
15
- {onClick && actionTitle && (
16
- <Action>
17
- <ButtonClear as="a" href="#" onClick={onClick}>
18
- <ButtonContent>{actionTitle}</ButtonContent>
19
- </ButtonClear>
20
- </Action>
21
- )}
22
- </Wrapper>
23
- );
24
-
25
- export default SectionHeader;
@@ -1,17 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- export const Wrapper = styled.div`
6
- display: flex;
7
- align-items: center;
8
- `;
9
-
10
- export const Heading = styled.div`
11
- flex: 1 1 auto;
12
- `;
13
-
14
- export const Action = styled.div`
15
- flex-shrink: 0;
16
- padding-left: ${size(2)};
17
- `;
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Icon, Content, Heading, Message } from './wrapper';
4
-
5
- import { IconCheck, IconInfo, IconExclamationCircle, IconExclamationTriangle } from '../Icon/index';
6
-
7
- interface Props {
8
- severity?: string;
9
- icon?: boolean;
10
- heading?: string;
11
- children?: React.ReactNode;
12
- }
13
-
14
- const Snackbar = ({ severity, icon, heading, children }: Props) => {
15
- let iconSelector = <IconInfo block />;
16
- if (severity === 'error') {
17
- iconSelector = <IconExclamationCircle block />;
18
- } else if (severity === 'warning') {
19
- iconSelector = <IconExclamationTriangle block />;
20
- } else if (severity === 'success') {
21
- iconSelector = <IconCheck block />;
22
- }
23
-
24
- return (
25
- <Wrapper severity={severity}>
26
- {icon && <Icon>{iconSelector}</Icon>}
27
- <Content>
28
- {heading && <Heading>{heading}</Heading>}
29
- <Message>{children}</Message>
30
- </Content>
31
- </Wrapper>
32
- );
33
- };
34
-
35
- export default Snackbar;
@@ -1,65 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
- import theme from '../../layout/theme';
5
-
6
- const getSnackbarBg = (severity: string | undefined): string => {
7
- let bg = theme.color.accent;
8
-
9
- if (severity === 'error') {
10
- bg = theme.color.ui.negativeLight;
11
- } else if (severity === 'warning') {
12
- bg = theme.color.ui.neutralLight;
13
- } else if (severity === 'info') {
14
- bg = theme.color.ui.infoLight;
15
- } else if (severity === 'success') {
16
- bg = theme.color.ui.positiveLight;
17
- }
18
-
19
- return bg;
20
- };
21
-
22
- interface Wrapper {
23
- severity?: string;
24
- }
25
- export const Wrapper = styled.div.attrs(() => ({
26
- role: 'alert',
27
- }))<Wrapper>`
28
- display: flex;
29
- align-items: center;
30
- padding: ${size(1.5)} ${size(2)};
31
- background-color: ${(props): string => getSnackbarBg(props.severity)};
32
- color: ${(props): string => props.theme.color.textDark};
33
- border-radius: 3px;
34
- `;
35
-
36
- export const Icon = styled.div`
37
- flex-shrink: 0;
38
- padding-right: ${size(2)};
39
- font-size: ${size(3)};
40
-
41
- > svg {
42
- display: block;
43
- }
44
- `;
45
-
46
- export const Content = styled.div`
47
- flex: 1 1 auto;
48
- font-size: 1rem;
49
- `;
50
-
51
- export const Heading = styled.div`
52
- font-weight: 700;
53
- `;
54
-
55
- export const Message = styled.div`
56
- > * {
57
- &:first-child {
58
- margin-top: 0;
59
- }
60
-
61
- &:last-child {
62
- margin-bottom: 0;
63
- }
64
- }
65
- `;
@@ -1,35 +0,0 @@
1
- import React from 'react';
2
-
3
- import { Wrapper, Select, Option, Icon } from './wrapper';
4
- import { IconChevronDown } from '../Icon/index';
5
- import { DrivingDistance } from '../../@types/codegen/types';
6
-
7
- export interface OptionProps {
8
- value: number | string | DrivingDistance;
9
- displayName?: number | string;
10
- }
11
-
12
- interface SortSelectProps {
13
- value: string | number;
14
- options: OptionProps[];
15
- unit?: string;
16
- onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;
17
- }
18
-
19
- const SortSelect = ({ value, options, onChange, unit }: SortSelectProps) => (
20
- <Wrapper>
21
- <Select value={value} onChange={onChange} title="Sortering" aria-label="Sortering">
22
- {options.map((option) => (
23
- <Option key={option.value} value={option.value}>
24
- {option.displayName || option.value}
25
- {unit ? ` ${unit}` : ''}
26
- </Option>
27
- ))}
28
- </Select>
29
- <Icon>
30
- <IconChevronDown block />
31
- </Icon>
32
- </Wrapper>
33
- );
34
-
35
- export default SortSelect;
@@ -1,54 +0,0 @@
1
- import styled from 'styled-components';
2
-
3
- import { size } from '../../layout/helpers';
4
-
5
- const iconSize = '0.875rem';
6
-
7
- export const Wrapper = styled.div`
8
- position: relative;
9
- `;
10
-
11
- export const Select = styled.select.attrs(() => ({
12
- className: 'wayke__theme wayke__font--regular',
13
- }))`
14
- position: relative;
15
- -webkit-appearance: none;
16
- -moz-appearance: none;
17
- appearance: none;
18
- -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
19
- text-indent: 0.01px;
20
- border: 0;
21
- padding: 0;
22
- padding-right: calc(${iconSize} + ${size(1)});
23
- background-color: transparent;
24
- color: ${(props) => props.theme.color.textDark};
25
- border-radius: 0;
26
- font-size: 16px;
27
- cursor: pointer;
28
- z-index: 1;
29
-
30
- :focus {
31
- outline: none;
32
- text-decoration: underline;
33
- }
34
-
35
- ::-ms-expand {
36
- display: none;
37
- }
38
-
39
- ::-moz-focus-inner {
40
- border: 0;
41
- }
42
- `;
43
-
44
- export const Option = styled.option`
45
- color: ${(props) => props.theme.color.textDark};
46
- `;
47
-
48
- export const Icon = styled.div`
49
- position: absolute;
50
- top: 50%;
51
- right: 0;
52
- transform: translateY(-50%);
53
- font-size: ${iconSize};
54
- `;
@@ -1,49 +0,0 @@
1
- import React from 'react';
2
- import SphereViewer from './SphereViewer';
3
-
4
- import { ImageFull } from '../Gallery/wrapper';
5
- import MediaButton from '../Gallery/MediaButton';
6
-
7
- const onMediaClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>, func: () => void) => {
8
- e.stopPropagation();
9
- e.preventDefault();
10
- func();
11
- };
12
-
13
- type PropsType = {
14
- url: string;
15
- preview: string;
16
- navigationDisabled: boolean;
17
- visible: boolean;
18
- onDisableNavigation: () => void;
19
- };
20
-
21
- const Sphere = ({ url, preview, visible, onDisableNavigation, navigationDisabled }: PropsType) => {
22
- if (!visible || (!navigationDisabled && visible)) {
23
- return (
24
- <>
25
- <ImageFull src={preview} alt="alt" />
26
- <MediaButton
27
- text="Starta 360° interiört"
28
- onClick={(e: React.MouseEvent<HTMLButtonElement, MouseEvent>): void =>
29
- onMediaClick(e, onDisableNavigation)
30
- }
31
- />
32
- </>
33
- );
34
- }
35
- if (navigationDisabled && visible) {
36
- return (
37
- <SphereViewer
38
- id={url}
39
- preview={url}
40
- src={url}
41
- autoLoad={true}
42
- onStart={onDisableNavigation}
43
- />
44
- );
45
- }
46
- return null;
47
- };
48
-
49
- export default Sphere;
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import SphereViewer from './SphereViewer';
3
-
4
- type PropsType = {
5
- url: string;
6
- };
7
-
8
- const SphereLightbox = ({ url }: PropsType) => <SphereViewer id={url} src={url} preview={url} />;
9
-
10
- export default SphereLightbox;
@@ -1,81 +0,0 @@
1
- import React, { lazy, useState, useEffect } from 'react';
2
-
3
- import { Wrapper } from './wrapper';
4
- import Loader from '../Loader/index';
5
-
6
- const ReactPannellum = lazy(() => import('react-pannellum'));
7
-
8
- const config = {
9
- type: 'equirectangular',
10
- autoRotate: -2,
11
- autoLoad: true,
12
- uiText: {
13
- bylineLabel: 'by %s',
14
- noPanoramaError: 'No panorama image was specified.',
15
- fileAccessError: 'The file %s could not be accessed.',
16
- malformedURLError: 'There is something wrong with the panorama URL.',
17
- iOS8WebGLError:
18
- "Due to iOS 8's broken WebGL implementation, only progressive encoded JPEGs work for your device (this panorama uses standard encoding).",
19
- genericWebGLError:
20
- 'Your browser does not have the necessary WebGL support to display this panorama.',
21
- textureSizeError:
22
- "This panorama is too big for your device! It's %spx wide, but your device only supports images up to %spx wide. Try another device. (If you're the author, try scaling down the image.)",
23
- unknownError: 'Unknown error. Check developer console.',
24
- loadButtonLabel: 'Starta 360° interiört',
25
- loadingLabel: 'Laddar...',
26
- },
27
- preview: '/images/placeholders/placeholder_product_card.jpg',
28
- compass: true,
29
- showZoomCtrl: true,
30
- keyboardZoom: false,
31
- mouseZoom: false,
32
- hfov: 180,
33
- };
34
-
35
- const style = {
36
- height: 0,
37
- width: '100%',
38
- paddingBottom: '66.666%',
39
- touchAction: 'manipulation',
40
- };
41
- type PropsType = {
42
- id: string;
43
- src: string;
44
- preview: string;
45
- autoLoad?: boolean;
46
- onStart?: () => void;
47
- };
48
-
49
- const SphereViewer = ({ id, src, preview, autoLoad, onStart }: PropsType) => {
50
- const [number] = useState(Math.floor(100000000 + Math.random() * 900000000));
51
- useEffect(() => {
52
- setTimeout(() => {
53
- if (onStart) {
54
- const startBtn = document.querySelector('.pnlm-load-button');
55
- if (startBtn) startBtn.addEventListener('click', onStart);
56
- }
57
- }, 100);
58
- }, []);
59
-
60
- const c = {
61
- ...config,
62
- preview,
63
- autoLoad,
64
- };
65
-
66
- return (
67
- <Wrapper>
68
- <React.Suspense fallback={<Loader />}>
69
- <ReactPannellum
70
- id={`a-${id}-${number}`}
71
- sceneId={src}
72
- imageSource={src}
73
- config={c}
74
- style={style}
75
- />
76
- </React.Suspense>
77
- </Wrapper>
78
- );
79
- };
80
-
81
- export default SphereViewer;