@wayke-se/components-react 2.11.0 → 2.15.0

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 (29) hide show
  1. package/dist-node/index.js +941 -2922
  2. package/dist-node/index.js.map +1 -1
  3. package/dist-src/components/Ecom/index.js +1 -1
  4. package/dist-src/components/Gallery/index.js +1 -1
  5. package/dist-src/components/InputCheckbox/index.js +1 -1
  6. package/dist-src/components/InputCheckbox/wrapper.js +2 -2
  7. package/dist-src/components/Page/index.js +1 -7
  8. package/dist-src/components/Pdf/index.js +11 -0
  9. package/dist-src/components/Pdf/wrapper.js +55 -0
  10. package/dist-src/components/RangeSlider/RangeSliderSimple.js +1 -1
  11. package/dist-src/components/RangeSlider/handle.js +2 -2
  12. package/dist-src/components/RangeSlider/index.js +1 -1
  13. package/dist-src/components/RangeSlider/track.js +2 -2
  14. package/dist-src/layouts/WaykeCompositeWithProvider.js +2 -2
  15. package/dist-src/layouts/searchItem/ManufacturerPackagesOption.js +1 -1
  16. package/dist-src/layouts/searchItem/MetadataItem.js +2 -2
  17. package/dist-src/layouts/searchItem/PackageOptionModal.js +1 -1
  18. package/dist-src/layouts/searchItem/PackageOptions.js +1 -1
  19. package/dist-src/layouts/searchItem/index.js +10 -1
  20. package/dist-src/queries/SEARCH_ITEM_QUERY.js +1 -0
  21. package/dist-src/utils/phonenumbers.js +1 -1
  22. package/dist-types/@types/codegen/types.d.ts +57 -42
  23. package/dist-types/components/Page/index.d.ts +1 -1
  24. package/dist-types/components/Pdf/index.d.ts +11 -0
  25. package/dist-types/components/Pdf/wrapper.d.ts +11 -0
  26. package/dist-types/index.d.ts +14 -8
  27. package/dist-web/index.js +89 -23
  28. package/dist-web/index.js.map +1 -1
  29. package/package.json +40 -40
package/dist-web/index.js CHANGED
@@ -9,8 +9,8 @@ import Slider$2 from 'react-slick';
9
9
  import scrollIntoView from 'scroll-into-view-if-needed';
10
10
  import { gql, useQuery, ApolloClient, InMemoryCache, ApolloProvider } from '@apollo/client';
11
11
  import EcomBase from '@wayke-se/ecom-react';
12
- import marked from 'marked';
13
- import { parsePhoneNumberFromString } from 'libphonenumber-js/custom';
12
+ import { marked } from 'marked';
13
+ import { parsePhoneNumberFromString } from 'libphonenumber-js/core';
14
14
 
15
15
  const _colors = {
16
16
  black: '#000',
@@ -87,13 +87,7 @@ const Wrapper = styled.div `
87
87
 
88
88
  const Container = ({ children }) => React__default.createElement(Wrapper, null, children);
89
89
 
90
- const Page = styled.main `
91
- display: flex;
92
- flex-direction: column;
93
- min-height: 100vh;
94
- min-height: -webkit-fill-available;
95
- padding-top: ${size(4)};
96
- `;
90
+ const Page = styled.div ``;
97
91
  const PageSection = styled.section `
98
92
  margin-bottom: ${size(4)};
99
93
 
@@ -1465,14 +1459,14 @@ const Handle = styled.div.attrs(() => ({
1465
1459
  }
1466
1460
  `;
1467
1461
 
1468
- const Handle$1 = ({ domain: [min, max], handle: { id, value, percent }, getHandleProps, }) => (React__default.createElement(Handle, Object.assign({ role: "slider", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value, style: {
1462
+ const Handle$1 = ({ domain: [min, max], handle: { id, value, percent }, getHandleProps, }) => (React__default.createElement(Handle, { role: "slider", "aria-valuemin": min, "aria-valuemax": max, "aria-valuenow": value, style: {
1469
1463
  left: `${percent}%`,
1470
- } }, getHandleProps(id))));
1464
+ }, ...getHandleProps(id) }));
1471
1465
 
1472
- const Track$1 = ({ source, target, getTrackProps }) => (React__default.createElement(Track, Object.assign({ style: {
1466
+ const Track$1 = ({ source, target, getTrackProps }) => (React__default.createElement(Track, { style: {
1473
1467
  left: `${source.percent}%`,
1474
1468
  width: `${target.percent - source.percent}%`,
1475
- } }, getTrackProps())));
1469
+ }, ...getTrackProps() }));
1476
1470
 
1477
1471
  const getSteps = (steps) => {
1478
1472
  let current = Number.MAX_SAFE_INTEGER;
@@ -1510,7 +1504,7 @@ const RangeSlider = ({ loading, values, domain, steps, unit, formatValues, maxPr
1510
1504
  React__default.createElement(Handle, { role: "slider", "aria-disabled": true, style: { left: '0' } }),
1511
1505
  React__default.createElement(Handle, { role: "slider", "aria-disabled": true, style: { left: '100%' } })))) : (React__default.createElement(Slider, null,
1512
1506
  React__default.createElement(Slider$1, { disabled: loading, mode: 1, step: step, domain: domain, onChange: onChange, onUpdate: onUpdate, values: values, rootStyle: { position: 'relative' } },
1513
- React__default.createElement(Rail, null, ({ getRailProps }) => React__default.createElement(Bar$1, Object.assign({}, getRailProps()))),
1507
+ React__default.createElement(Rail, null, ({ getRailProps }) => React__default.createElement(Bar$1, { ...getRailProps() })),
1514
1508
  React__default.createElement(Handles, null, ({ handles, getHandleProps }) => (React__default.createElement("div", { className: "slider-handles" }, handles.map((handle) => (React__default.createElement(Handle$1, { key: handle.id, handle: handle, domain: domain, getHandleProps: getHandleProps })))))),
1515
1509
  React__default.createElement(Tracks, { left: false, right: false }, ({ tracks, getTrackProps }) => (React__default.createElement("div", { className: "slider-tracks" }, tracks.map(({ id, source, target }) => (React__default.createElement(Track$1, { key: id, source: source, target: target, getTrackProps: getTrackProps }))))))))),
1516
1510
  React__default.createElement(RangeSpan, null,
@@ -3968,7 +3962,7 @@ const Gallery = ({ media, placeholderImage }) => {
3968
3962
  React__default.createElement(Wrapper$g, null,
3969
3963
  React__default.createElement(Main, null,
3970
3964
  React__default.createElement(SliderWrapper, { onMouseDown: onMouseDown, onMouseMove: onMouseMove, onClick: onClick },
3971
- React__default.createElement(Slider$2, Object.assign({}, sliderSettings, { swipe: !navigationDisabled, touchMove: !navigationDisabled, swipeToSlide: !navigationDisabled, ref: slider, beforeChange: beforeChange }), !!(media === null || media === void 0 ? void 0 : media.length) ? (media.map((m, i) => {
3965
+ React__default.createElement(Slider$2, { ...sliderSettings, swipe: !navigationDisabled, touchMove: !navigationDisabled, swipeToSlide: !navigationDisabled, ref: slider, beforeChange: beforeChange }, !!(media === null || media === void 0 ? void 0 : media.length) ? (media.map((m, i) => {
3972
3966
  var _a;
3973
3967
  return (React__default.createElement(Item$7, { key: m.files[0].url || i },
3974
3968
  m.type === 'image' && (React__default.createElement(Image$1, { src: (_a = m.files[0].formats.filter(notEmpty).find((x) => x.format === '1170x')) === null || _a === void 0 ? void 0 : _a.url, alt: `Bild ${i + 1}` })),
@@ -4104,6 +4098,7 @@ const SEARCH_ITEM_QUERY = gql `
4104
4098
  query SearchItem($id: ID!) {
4105
4099
  vehicle(id: $id) {
4106
4100
  id
4101
+ documents
4107
4102
  contact {
4108
4103
  name
4109
4104
  email
@@ -4545,7 +4540,7 @@ const RangeSliderSimple = ({ loading, values, domain, steps, unit, formatValues,
4545
4540
  return (React__default.createElement(React__default.Fragment, null,
4546
4541
  React__default.createElement(Slider, null,
4547
4542
  React__default.createElement(Slider$1, { disabled: loading, mode: 1, step: step, domain: domain, onChange: onChange, onUpdate: onUpdate, values: values, rootStyle: { position: 'relative' } },
4548
- React__default.createElement(Rail, null, ({ getRailProps }) => React__default.createElement(Bar$1, Object.assign({}, getRailProps()))),
4543
+ React__default.createElement(Rail, null, ({ getRailProps }) => React__default.createElement(Bar$1, { ...getRailProps() })),
4549
4544
  React__default.createElement(Handles, null, ({ handles, getHandleProps }) => (React__default.createElement("div", { className: "slider-handles" }, handles.map((handle) => (React__default.createElement(Handle$1, { key: handle.id, handle: handle, domain: domain, getHandleProps: getHandleProps })))))),
4550
4545
  React__default.createElement(Tracks, { right: false }, ({ tracks, getTrackProps }) => (React__default.createElement("div", { className: "slider-tracks" }, tracks.map(({ id, source, target }) => (React__default.createElement(Track$1, { key: id, source: source, target: target, getTrackProps: getTrackProps })))))))),
4551
4546
  false ));
@@ -4937,7 +4932,7 @@ const Label$8 = styled.label.attrs(() => ({
4937
4932
  margin-top: -2px;
4938
4933
  }
4939
4934
  `;
4940
- const Wrapper$r = styled((props) => createElement("div", Object.assign({}, props))).attrs(({ type, checked }) => ({
4935
+ const Wrapper$r = styled((props) => createElement("div", { ...props })).attrs(({ type, checked }) => ({
4941
4936
  role: type || 'checkbox',
4942
4937
  'aria-checked': checked,
4943
4938
  })) `
@@ -4952,7 +4947,7 @@ const Wrapper$r = styled((props) => createElement("div", Object.assign({}, props
4952
4947
  }
4953
4948
  `}
4954
4949
  `;
4955
- const Input$2 = styled((props) => (createElement("input", Object.assign({}, props, { className: `${props.checked ? 'checked' : undefined} ${props.className}` })))).attrs(({ type, checked }) => ({
4950
+ const Input$2 = styled((props) => (createElement("input", { ...props, className: `${props.checked ? 'checked' : undefined} ${props.className}` }))).attrs(({ type, checked }) => ({
4956
4951
  checked,
4957
4952
  type: type || 'checkbox',
4958
4953
  })) `
@@ -5283,7 +5278,7 @@ const Ecom = ({ vehicle, manufacturer, onExit, onUserEvent }) => {
5283
5278
  useBankId: ecomSettings === null || ecomSettings === void 0 ? void 0 : ecomSettings.useBankId,
5284
5279
  displayBankIdAlert: ecomSettings === null || ecomSettings === void 0 ? void 0 : ecomSettings.displayBankIdAlert,
5285
5280
  };
5286
- return React__default.createElement(EcomBase, Object.assign({}, ecomData));
5281
+ return React__default.createElement(EcomBase, { ...ecomData });
5287
5282
  };
5288
5283
 
5289
5284
  const ManufacturerPackageOption = ({ packageOption }) => {
@@ -6834,7 +6829,7 @@ const MetadataItem = ({ name, hint, value, unit }) => {
6834
6829
  const onToggleFoldout = useCallback(() => setFoldout(!foldout), [foldout]);
6835
6830
  const presentedValue = formatValue(value, unit);
6836
6831
  return (React__default.createElement(TableListItem, null,
6837
- React__default.createElement(TableListKey, null, hint ? (React__default.createElement(ButtonInlinePrimary, { onClick: onToggleFoldout, title: `Mer information om ${name}` }, name)) : (name)),
6832
+ React__default.createElement(TableListKey, null, hint ? (React__default.createElement(ButtonInline, { onClick: onToggleFoldout, title: `Mer information om ${name}` }, name)) : (name)),
6838
6833
  React__default.createElement(TableListValue, null, value !== undefined ? presentedValue : 'Uppgift saknas'),
6839
6834
  hint && foldout && (React__default.createElement(Modal, { title: name, onClose: onToggleFoldout },
6840
6835
  React__default.createElement(Content$2, { dangerouslySetInnerHTML: { __html: hint } })))));
@@ -6952,6 +6947,69 @@ const PropertySet = ({ propertySet, vehicleData }) => {
6952
6947
  React__default.createElement(MetadataCategory, { properties: activeCategory.properties, subCategories: activeCategory.subCategories })))));
6953
6948
  };
6954
6949
 
6950
+ const PdfListItem = styled.li.attrs(() => ({
6951
+ className: 'wayke__theme wayke__color--primary-text',
6952
+ })) `
6953
+ flex: 0 0 50%;
6954
+ padding: ${size(1)};
6955
+
6956
+ ${({ theme }) => theme.breakpoint.LtSm} {
6957
+ flex: 0 0 100%;
6958
+ }
6959
+ `;
6960
+ const PdfContainer = styled.ul `
6961
+ list-style: none;
6962
+ padding: 0;
6963
+ display: flex;
6964
+ flex-wrap: wrap;
6965
+ margin: ${size(-1)};
6966
+ `;
6967
+ const PdfLink = styled.a.attrs(() => ({
6968
+ className: 'wayke__theme wayke__color--primary-text wayke__font--bold',
6969
+ })) `
6970
+ text-decoration: none;
6971
+ font-size: 0.875rem;
6972
+ &:after {
6973
+ content: '';
6974
+ position: absolute;
6975
+ top: 0;
6976
+ left: 0;
6977
+ width: 100%;
6978
+ height: 100%;
6979
+ }
6980
+ `;
6981
+ const PdfTitle = styled.div `
6982
+ color: ${(props) => props.theme.color.textDark};
6983
+ `;
6984
+ const PdfSubtitle = styled.div `
6985
+ color: ${(props) => props.theme.color.textDarkLighten};
6986
+ `;
6987
+ const PdfColumn = styled.div `
6988
+ flex 0 0 auto;
6989
+ &:first-child {
6990
+ flex: 1 1 auto;
6991
+ }
6992
+ `;
6993
+ const PdfListInner = styled.div `
6994
+ position: relative;
6995
+ border: 1px solid ${(props) => props.theme.color.border};
6996
+ padding: ${size(1.5)};
6997
+ display: flex;
6998
+ align-items: center;
6999
+ :hover {
7000
+ background-color: ${(props) => props.theme.color.hoverOverlay};
7001
+ }
7002
+ `;
7003
+
7004
+ const PdfDownloadItem = ({ document }) => (React__default.createElement(PdfListItem, null,
7005
+ React__default.createElement(PdfListInner, null,
7006
+ React__default.createElement(PdfColumn, null,
7007
+ React__default.createElement(PdfTitle, null, document.name),
7008
+ React__default.createElement(PdfSubtitle, null, document.contentType)),
7009
+ React__default.createElement(PdfColumn, null,
7010
+ React__default.createElement(PdfLink, { href: document.url, rel: "noopener noreferrer nofollow", target: "_blank" }, "\u00D6ppna")))));
7011
+ const PdfDownloadContainer = ({ documents }) => (React__default.createElement(PdfContainer, null, documents.map((document, i) => (React__default.createElement(PdfDownloadItem, { key: `${document.url}-${i}`, document: document })))));
7012
+
6955
7013
  const WaykeSearchItem = ({ id, hashRoute, pathRoute, disableResetScrollOnInit, placeholderImage, modifyDocumentTitleItem, onClickSearchItem, }) => {
6956
7014
  var _a, _b, _c;
6957
7015
  const [ecomModal, setEcomModal] = useState(false);
@@ -6982,7 +7040,7 @@ const WaykeSearchItem = ({ id, hashRoute, pathRoute, disableResetScrollOnInit, p
6982
7040
  const { vehicle } = result;
6983
7041
  const contact = centralStorageVehicle === null || centralStorageVehicle === void 0 ? void 0 : centralStorageVehicle.contact;
6984
7042
  const branch = centralStorageVehicle === null || centralStorageVehicle === void 0 ? void 0 : centralStorageVehicle.branch;
6985
- const { title, shortDescription, media, description, price, financialOptions, insuranceOptions, manufacturer, ecommerce, packageOptions, publishedAt, } = vehicle;
7043
+ const { title, shortDescription, media, description, price, financialOptions, insuranceOptions, manufacturer, ecommerce, packageOptions, publishedAt, documents, } = vehicle;
6986
7044
  const { fuelType, mileage, gearbox, modelYear, propertySet } = vehicle.data;
6987
7045
  const uspList = [
6988
7046
  {
@@ -7052,6 +7110,14 @@ const WaykeSearchItem = ({ id, hashRoute, pathRoute, disableResetScrollOnInit, p
7052
7110
  React__default.createElement(Repeat, null,
7053
7111
  React__default.createElement(ExtendContent, { actionTitle: "Visa mer", onClick: onShowMoreOptionsClick },
7054
7112
  React__default.createElement(UspList, { items: options }))))),
7113
+ (documents.length || 0) > 0 && (React__default.createElement(ProductPageMainSection, null,
7114
+ React__default.createElement(Repeat, null,
7115
+ React__default.createElement(H2, { noMargin: true }, "Dokument")),
7116
+ React__default.createElement(Repeat, null,
7117
+ React__default.createElement(Content$2, null,
7118
+ React__default.createElement("p", null, "Tillh\u00F6rande dokument f\u00F6r bilen."))),
7119
+ React__default.createElement(Repeat, null,
7120
+ React__default.createElement(PdfDownloadContainer, { documents: documents })))),
7055
7121
  React__default.createElement(ProductPageMainSection, null,
7056
7122
  React__default.createElement(Branch, { branch: branch, loading: loadingCentralStorageVehicle }),
7057
7123
  ecommerce && ecommerce.enabled && (React__default.createElement(Repeat, null,
@@ -7460,8 +7526,8 @@ const WaykeComposite = ({ filterList, initialQueryParams, removeSearchBar, remov
7460
7526
  return (React__default.createElement(React__default.Fragment, null, id ? (React__default.createElement(WaykeSearchItem, { id: id, hashRoute: !pathRoute, disableResetScrollOnInit: disableResetScrollOnInit, placeholderImage: placeholderImage, pathRoute: pathRoute, modifyDocumentTitleItem: modifyDocumentTitleItem })) : (React__default.createElement(WaykeSearch, { filterList: filterList, initialQueryParams: initialQueryParams, removeSearchBar: removeSearchBar, hashRoute: !pathRoute, placeholderImage: placeholderImage, pathRoute: pathRoute, removeFilterOptions: removeFilterOptions, modifyDocumentTitleSearch: modifyDocumentTitleSearch }))));
7461
7527
  };
7462
7528
 
7463
- const WaykeCompositeWithProvider = ({ provider, composite }) => (React__default.createElement(WaykeProvider, Object.assign({}, provider),
7464
- React__default.createElement(WaykeComposite, Object.assign({}, composite))));
7529
+ const WaykeCompositeWithProvider = ({ provider, composite }) => (React__default.createElement(WaykeProvider, { ...provider },
7530
+ React__default.createElement(WaykeComposite, { ...composite })));
7465
7531
 
7466
7532
  const WaykeItemProvider = ({ url, urlMlt, apiKey, ecomSettings, graphQlUrl, googleMapsApiKey, googleMapsMarker, children, }) => {
7467
7533
  useEcom(ecomSettings);