thm-p3-configurator 0.0.371 → 0.0.372

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 (55) hide show
  1. package/dist/src/shared/__helpers__/__tests__/singleOrderCustomerDetails.test.js +70 -3
  2. package/dist/src/shared/__helpers__/singleOrderCustomerDetails.js +17 -10
  3. package/package.json +1 -1
  4. package/dist/src/shared/__components__/LocationsSelector/LocationDetails.js +0 -320
  5. package/dist/src/shared/__components__/LocationsSelector/LocationInfo.js +0 -140
  6. package/dist/src/shared/__components__/LocationsSelector/LocationList.js +0 -180
  7. package/dist/src/shared/__components__/LocationsSelector/LocationListItem.js +0 -115
  8. package/dist/src/shared/__components__/LocationsSelector/LocationTreeMarker.js +0 -97
  9. package/dist/src/shared/__components__/LocationsSelector/index.js +0 -162
  10. package/dist/src/shared/__components__/Modal.js +0 -78
  11. package/dist/src/shared/__components__/Navbar.js +0 -82
  12. package/dist/src/shared/__components__/NavigationSteps.js +0 -126
  13. package/dist/src/shared/__components__/Pagination.js +0 -53
  14. package/dist/src/shared/__components__/ProductCard/ProductCardCheckbox.js +0 -38
  15. package/dist/src/shared/__components__/ProductCard/ProductCardDescription.js +0 -84
  16. package/dist/src/shared/__components__/ProductCard/ProductCardDiscountAlert.js +0 -57
  17. package/dist/src/shared/__components__/ProductCard/ProductCardImage.js +0 -28
  18. package/dist/src/shared/__components__/ProductCard/ProductCardPrice.js +0 -37
  19. package/dist/src/shared/__components__/ProductCard/ProductCardRibbon.js +0 -28
  20. package/dist/src/shared/__components__/ProductCard/ProductCardSpecifications.js +0 -77
  21. package/dist/src/shared/__components__/ProductCard/ProductCardUsps.js +0 -82
  22. package/dist/src/shared/__components__/ProductCard/index.js +0 -228
  23. package/dist/src/shared/__components__/ProductTable/ProductTableEditableRow.js +0 -66
  24. package/dist/src/shared/__components__/ProductTable/ProductTableHead.js +0 -32
  25. package/dist/src/shared/__components__/ProductTable/ProductTableSection.js +0 -25
  26. package/dist/src/shared/__components__/ProductTable/ProductTableSectionTotal.js +0 -46
  27. package/dist/src/shared/__components__/ProductTable/ProductTableStaticRow.js +0 -47
  28. package/dist/src/shared/__components__/ProductTable/ProductTableTotal.js +0 -41
  29. package/dist/src/shared/__components__/ProductTable/index.js +0 -127
  30. package/dist/src/shared/__components__/SingleOrderCartCard.js +0 -78
  31. package/dist/src/shared/__components__/SingleOrderProductCard.js +0 -352
  32. package/dist/src/shared/__components__/Spinners/FullPageSpinner.js +0 -73
  33. package/dist/src/shared/__components__/Spinners/InlineSpinner.js +0 -26
  34. package/dist/src/shared/__components__/Spinners/TextSpinner.js +0 -31
  35. package/dist/src/shared/__components__/UspsList.js +0 -27
  36. package/dist/src/shared/__components__/internal/InternalCustomerDetailsForm.js +0 -995
  37. package/dist/src/shared/__constants__/__tests__/index.test.js +0 -20
  38. package/dist/src/shared/__constants__/cartTable.js +0 -32
  39. package/dist/src/shared/__constants__/cookiebot.js +0 -7
  40. package/dist/src/shared/__constants__/index.js +0 -379
  41. package/dist/src/shared/__constants__/sentry.js +0 -20
  42. package/dist/src/shared/__containers__/ANWBMembershipInput.js +0 -170
  43. package/dist/src/shared/__containers__/AppointmentForm.js +0 -535
  44. package/dist/src/shared/__containers__/BoardComputerCard.js +0 -139
  45. package/dist/src/shared/__containers__/BottomNavigationBar.js +0 -182
  46. package/dist/src/shared/__containers__/DiscountProductsSelector.js +0 -149
  47. package/dist/src/shared/__containers__/ExitIntentModal.js +0 -403
  48. package/dist/src/shared/__containers__/ExtraProductsOverview.js +0 -251
  49. package/dist/src/shared/__containers__/LicensePlateForm.js +0 -187
  50. package/dist/src/shared/__containers__/ManualSelectionForm.js +0 -284
  51. package/dist/src/shared/__containers__/ProductCartSide.js +0 -356
  52. package/dist/src/shared/__containers__/ProductDiscountCard.js +0 -167
  53. package/dist/src/shared/__containers__/ProductsCartOverview.js +0 -903
  54. package/dist/src/shared/__containers__/ProductsOverview.js +0 -436
  55. package/dist/src/shared/__containers__/QuestionsForm.js +0 -540
@@ -33,7 +33,7 @@ describe('singleOrderCustomerDetails', () => {
33
33
  ownershipType: _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk
34
34
  })).toEqual(['companyName', 'firstName', 'lastName', 'email', 'phoneNumber', 'streetName', 'houseNumber', 'zipCode', 'city', 'countryId']);
35
35
  });
36
- it('clears customer flags and inactive fields when direct delivery is off', () => {
36
+ it('behoudt ingevulde klant-/zakelijke velden bij losse order zonder rechtstreeks leveren (Zakelijk)', () => {
37
37
  expect((0, _singleOrderCustomerDetails.buildSingleOrderCustomerPayload)({
38
38
  customer: {
39
39
  firstName: 'Remko',
@@ -46,11 +46,48 @@ describe('singleOrderCustomerDetails', () => {
46
46
  afhalenInWinkel: true,
47
47
  ownershipType: _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk
48
48
  })).toEqual({
49
- firstName: '',
49
+ firstName: 'Remko',
50
50
  infix: '',
51
51
  lastName: '',
52
52
  email: '',
53
53
  phoneNumber: '',
54
+ note: '',
55
+ zipCode: '1234AB',
56
+ houseNumber: '',
57
+ houseNumberAddition: '',
58
+ streetName: '',
59
+ city: '',
60
+ companyName: 'TowCenter Breda',
61
+ companyNamePlaceholder: '',
62
+ kvkNumber: '',
63
+ vatNumber: '',
64
+ countryId: '',
65
+ zakelijkContactPersoonNaam: 'Liam',
66
+ zakelijkContactTelefoonnummer: '',
67
+ zakeiljkContactFactuuradres: '',
68
+ zakelijkContactEMailadres: '',
69
+ anderAfleveradres: false,
70
+ afhalenInWinkel: false,
71
+ anderFactuuradres: false
72
+ });
73
+ });
74
+ it('wist zakelijke bedrijfs-/contactvelden bij Particulier', () => {
75
+ expect((0, _singleOrderCustomerDetails.buildSingleOrderCustomerPayload)({
76
+ customer: {
77
+ firstName: 'A',
78
+ companyName: 'MoetWeg',
79
+ zakelijkContactPersoonNaam: 'X'
80
+ },
81
+ webshop: false,
82
+ anderAfleveradres: false,
83
+ ownershipType: _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Particulier
84
+ })).toEqual({
85
+ firstName: 'A',
86
+ infix: '',
87
+ lastName: '',
88
+ email: '',
89
+ phoneNumber: '',
90
+ note: '',
54
91
  zipCode: '',
55
92
  houseNumber: '',
56
93
  houseNumberAddition: '',
@@ -82,7 +119,7 @@ describe('singleOrderCustomerDetails', () => {
82
119
  leaseNumber: ''
83
120
  });
84
121
  });
85
- it('only forwards top-level business contact fields for zakelijke direct delivery', () => {
122
+ it('stuurt geen zakelijke contactvelden mee bij Particulier (ook niet bij afleveradres aan)', () => {
86
123
  expect((0, _singleOrderCustomerDetails.buildSingleOrderBusinessContactPayload)({
87
124
  customer: {
88
125
  zakelijkContactPersoonNaam: 'Liam',
@@ -100,4 +137,34 @@ describe('singleOrderCustomerDetails', () => {
100
137
  zakelijkContactEMailadres: undefined
101
138
  });
102
139
  });
140
+ it('stuurt zakelijke contactvelden ook zonder afleveradres als ze zijn gevuld', () => {
141
+ expect((0, _singleOrderCustomerDetails.buildSingleOrderBusinessContactPayload)({
142
+ customer: {
143
+ zakelijkContactPersoonNaam: 'Liam'
144
+ },
145
+ ownershipType: _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk,
146
+ webshop: false,
147
+ anderAfleveradres: false
148
+ })).toEqual({
149
+ zakelijkContactPersoonNaam: 'Liam',
150
+ zakelijkContactTelefoonnummer: undefined,
151
+ zakeiljkContactFactuuradres: undefined,
152
+ zakelijkContactEMailadres: undefined
153
+ });
154
+ });
155
+ it('stuurt bij Zakelijk zonder afleveradres geen zakelijke contact-keys als deze leeg zijn', () => {
156
+ expect((0, _singleOrderCustomerDetails.buildSingleOrderBusinessContactPayload)({
157
+ customer: {
158
+ firstName: 'Test'
159
+ },
160
+ ownershipType: _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk,
161
+ webshop: false,
162
+ anderAfleveradres: false
163
+ })).toEqual({
164
+ zakelijkContactPersoonNaam: undefined,
165
+ zakelijkContactTelefoonnummer: undefined,
166
+ zakeiljkContactFactuuradres: undefined,
167
+ zakelijkContactEMailadres: undefined
168
+ });
169
+ });
103
170
  });
@@ -1,15 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ require("core-js/modules/es.string.trim.js");
3
4
  require("core-js/modules/esnext.iterator.constructor.js");
4
5
  require("core-js/modules/esnext.iterator.filter.js");
5
6
  require("core-js/modules/esnext.iterator.for-each.js");
6
- require("core-js/modules/esnext.iterator.constructor.js");
7
+ require("core-js/modules/esnext.iterator.some.js");
7
8
  require("core-js/modules/esnext.iterator.filter.js");
8
9
  require("core-js/modules/esnext.iterator.for-each.js");
9
10
  Object.defineProperty(exports, "__esModule", {
10
11
  value: true
11
12
  });
12
13
  exports.getSingleOrderRequiredFields = exports.getSingleOrderCheckboxAvailability = exports.getEmptySingleOrderCustomer = exports.buildSingleOrderVehiclePayload = exports.buildSingleOrderCustomerPayload = exports.buildSingleOrderBusinessContactPayload = void 0;
14
+ require("core-js/modules/es.string.trim.js");
15
+ require("core-js/modules/esnext.iterator.constructor.js");
16
+ require("core-js/modules/esnext.iterator.some.js");
13
17
  var _constants__ = require("../__constants__");
14
18
  function ownKeys(e, r) {
15
19
  var t = Object.keys(e);
@@ -113,14 +117,6 @@ const buildSingleOrderCustomerPayload = _ref3 => {
113
117
  ownershipType = null
114
118
  } = _ref3;
115
119
  const baseCustomer = _objectSpread(_objectSpread({}, getEmptySingleOrderCustomer()), customer);
116
- if (!webshop && !anderAfleveradres) {
117
- return _objectSpread(_objectSpread({}, getEmptySingleOrderCustomer()), {}, {
118
- note: (customer === null || customer === void 0 ? void 0 : customer.note) || '',
119
- anderAfleveradres: false,
120
- afhalenInWinkel: false,
121
- anderFactuuradres: false
122
- });
123
- }
124
120
  const payload = _objectSpread(_objectSpread({}, baseCustomer), {}, {
125
121
  anderAfleveradres: Boolean(anderAfleveradres),
126
122
  afhalenInWinkel: false,
@@ -160,7 +156,18 @@ const buildSingleOrderBusinessContactPayload = _ref5 => {
160
156
  webshop = false,
161
157
  anderAfleveradres = false
162
158
  } = _ref5;
163
- const shouldIncludeBusinessContacts = ownershipType === _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk && (webshop || anderAfleveradres);
159
+ if (ownershipType !== _constants__.VEHICLE_SINGLE_ORDER_OWNERSHIP_TYPE.Zakelijk) {
160
+ return {
161
+ zakelijkContactPersoonNaam: undefined,
162
+ zakelijkContactTelefoonnummer: undefined,
163
+ zakeiljkContactFactuuradres: undefined,
164
+ zakelijkContactEMailadres: undefined
165
+ };
166
+ }
167
+ const hasAnyExplicitBusinessContact = [customer === null || customer === void 0 ? void 0 : customer.zakelijkContactPersoonNaam, customer === null || customer === void 0 ? void 0 : customer.zakelijkContactTelefoonnummer, customer === null || customer === void 0 ? void 0 : customer.zakeiljkContactFactuuradres, customer === null || customer === void 0 ? void 0 : customer.zakelijkContactEMailadres].some(v => typeof v === 'string' ? v.trim() : v);
168
+
169
+ /** Zakelijke contactvelden: meesturen bij webshop/levering of bij ingevulde zakelijke contactdata */
170
+ const shouldIncludeBusinessContacts = webshop || anderAfleveradres || hasAnyExplicitBusinessContact;
164
171
  if (!shouldIncludeBusinessContacts) {
165
172
  return {
166
173
  zakelijkContactPersoonNaam: undefined,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thm-p3-configurator",
3
- "version": "0.0.371",
3
+ "version": "0.0.372",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.js",
6
6
  "author": "EnoRm.",
@@ -1,320 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/es.number.to-fixed.js");
4
- require("core-js/modules/es.weak-map.js");
5
- require("core-js/modules/esnext.iterator.constructor.js");
6
- require("core-js/modules/esnext.iterator.filter.js");
7
- require("core-js/modules/esnext.iterator.map.js");
8
- require("core-js/modules/web.dom-collections.iterator.js");
9
- require("core-js/modules/es.weak-map.js");
10
- require("core-js/modules/web.dom-collections.iterator.js");
11
- Object.defineProperty(exports, "__esModule", {
12
- value: true
13
- });
14
- exports.default = void 0;
15
- require("core-js/modules/es.number.to-fixed.js");
16
- require("core-js/modules/esnext.iterator.constructor.js");
17
- require("core-js/modules/esnext.iterator.filter.js");
18
- require("core-js/modules/esnext.iterator.map.js");
19
- var _react = _interopRequireWildcard(require("react"));
20
- var _queries = require("../../__api__/queries");
21
- var _helpers__ = require("../../__helpers__");
22
- function _getRequireWildcardCache(e) {
23
- if ("function" != typeof WeakMap) return null;
24
- var r = new WeakMap(),
25
- t = new WeakMap();
26
- return (_getRequireWildcardCache = function _getRequireWildcardCache(e) {
27
- return e ? t : r;
28
- })(e);
29
- }
30
- function _interopRequireWildcard(e, r) {
31
- if (!r && e && e.__esModule) return e;
32
- if (null === e || "object" != typeof e && "function" != typeof e) return {
33
- default: e
34
- };
35
- var t = _getRequireWildcardCache(r);
36
- if (t && t.has(e)) return t.get(e);
37
- var n = {
38
- __proto__: null
39
- },
40
- a = Object.defineProperty && Object.getOwnPropertyDescriptor;
41
- for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {
42
- var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
43
- i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
44
- }
45
- return n.default = e, t && t.set(e, n), n;
46
- }
47
- const isStatusPositive = status => status === true || status === 1 || status === 'ja' || status === 'Ja';
48
- const StatusDot = _ref => {
49
- let {
50
- status
51
- } = _ref;
52
- const positive = isStatusPositive(status);
53
- return /*#__PURE__*/_react.default.createElement("span", {
54
- className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1')
55
- }, /*#__PURE__*/_react.default.createElement("span", {
56
- style: {
57
- width: 7,
58
- height: 7,
59
- borderRadius: '50%',
60
- flexShrink: 0,
61
- background: positive ? '#038808' : '#adb5bd',
62
- display: 'inline-block'
63
- }
64
- }), /*#__PURE__*/_react.default.createElement("span", {
65
- style: {
66
- fontSize: 11,
67
- fontWeight: 600,
68
- color: positive ? '#038808' : '#6c757d'
69
- }
70
- }, positive ? 'Ja' : 'Nee'));
71
- };
72
- const ServiceRow = _ref2 => {
73
- let {
74
- icon,
75
- label,
76
- status,
77
- bedrag,
78
- voorwaarden
79
- } = _ref2;
80
- return /*#__PURE__*/_react.default.createElement("div", {
81
- style: {
82
- marginBottom: 6
83
- }
84
- }, /*#__PURE__*/_react.default.createElement("div", {
85
- className: (0, _helpers__.withStyle)('d-flex align-items-center justify-content-between')
86
- }, /*#__PURE__*/_react.default.createElement("span", {
87
- className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1')
88
- }, /*#__PURE__*/_react.default.createElement("i", {
89
- className: icon,
90
- style: {
91
- width: 14,
92
- textAlign: 'center',
93
- fontSize: 11,
94
- color: '#6c757d'
95
- }
96
- }), /*#__PURE__*/_react.default.createElement("span", {
97
- style: {
98
- fontSize: 12,
99
- fontWeight: 600,
100
- color: '#343a40'
101
- }
102
- }, label)), /*#__PURE__*/_react.default.createElement("span", {
103
- className: (0, _helpers__.withStyle)('d-flex align-items-center gap-2')
104
- }, bedrag != null && bedrag !== '' && /*#__PURE__*/_react.default.createElement("span", {
105
- style: {
106
- fontSize: 11,
107
- color: '#6c757d'
108
- }
109
- }, typeof bedrag === 'number' ? "\u20AC\xA0".concat(bedrag.toFixed(2)) : bedrag), /*#__PURE__*/_react.default.createElement(StatusDot, {
110
- status: status
111
- }))), voorwaarden && /*#__PURE__*/_react.default.createElement("p", {
112
- style: {
113
- margin: '2px 0 0 18px',
114
- fontSize: 10,
115
- color: '#6c757d',
116
- fontStyle: 'italic',
117
- lineHeight: 1.4
118
- }
119
- }, voorwaarden));
120
- };
121
- const SectionLabel = _ref3 => {
122
- let {
123
- icon,
124
- label
125
- } = _ref3;
126
- return /*#__PURE__*/_react.default.createElement("p", {
127
- className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1 mb-1'),
128
- style: {
129
- fontSize: 11,
130
- fontWeight: 700,
131
- color: '#495057',
132
- textTransform: 'uppercase',
133
- letterSpacing: '0.04em'
134
- }
135
- }, /*#__PURE__*/_react.default.createElement("i", {
136
- className: icon,
137
- style: {
138
- width: 14,
139
- textAlign: 'center',
140
- fontSize: 10,
141
- color: '#6c757d'
142
- }
143
- }), label);
144
- };
145
- const formatDate = dateStr => {
146
- if (!dateStr) return '';
147
- const date = new Date(dateStr);
148
- if (isNaN(date.getTime())) return dateStr;
149
- return date.toLocaleDateString('nl-NL', {
150
- day: '2-digit',
151
- month: '2-digit',
152
- year: 'numeric'
153
- });
154
- };
155
-
156
- /**
157
- * Normalises a raw branch object (from GET /branches/:id) into display props.
158
- */
159
- const buildDetailProps = branch => {
160
- if (!branch) return null;
161
- return {
162
- leenauto: {
163
- status: branch.leenautoJaNee,
164
- voorwaarden: branch.leenautoVoorwaarden,
165
- bedrag: branch.leenautoBedrag
166
- },
167
- leenfiets: {
168
- status: branch.leenfietsJaNee,
169
- voorwaarden: branch.leenfietsVoorwaarden
170
- },
171
- haalEnBrengservice: {
172
- status: branch.haalEnBrengServiceJaNee,
173
- voorwaarden: branch.haalEnBrengServiceVoorwaarden
174
- },
175
- betaalmethoden: Array.isArray(branch.betaalmethoden) ? branch.betaalmethoden.map(m => m && typeof m === 'object' ? m.title : m).filter(Boolean) : branch.betaalmethoden,
176
- extraGeslotenDagen: branch.extraGeslotenDagen
177
- };
178
- };
179
-
180
- /**
181
- * Fetches and displays extra location-specific details in the Partner Portal configurator.
182
- * Only rendered when APP_CONFIG.internal is true — never on the public website.
183
- */
184
- const LocationDetails = _ref4 => {
185
- let {
186
- id
187
- } = _ref4;
188
- const {
189
- branchById,
190
- isLoadingBranchById
191
- } = (0, _queries.useBranchByIdOrWidgetId)(id || '');
192
- const today = (0, _react.useMemo)(() => {
193
- const d = new Date();
194
- d.setHours(0, 0, 0, 0);
195
- return d;
196
- }, []);
197
- if (isLoadingBranchById && !branchById) {
198
- return /*#__PURE__*/_react.default.createElement("div", {
199
- className: (0, _helpers__.withStyle)('d-flex align-items-center gap-1 mt-2 pt-2'),
200
- style: {
201
- borderTop: '1px solid #e9ecef'
202
- }
203
- }, /*#__PURE__*/_react.default.createElement("div", {
204
- className: (0, _helpers__.withStyle)('spinner-border spinner-border-sm text-primary'),
205
- role: "status",
206
- style: {
207
- width: 12,
208
- height: 12,
209
- borderWidth: 2
210
- }
211
- }), /*#__PURE__*/_react.default.createElement("small", {
212
- className: (0, _helpers__.withStyle)('text-muted'),
213
- style: {
214
- fontSize: 11
215
- }
216
- }, "Vestigingsdetails laden\u2026"));
217
- }
218
- const props = buildDetailProps(branchById);
219
- if (!props) return null;
220
- const {
221
- leenauto,
222
- leenfiets,
223
- haalEnBrengservice,
224
- betaalmethoden,
225
- extraGeslotenDagen
226
- } = props;
227
- const upcomingGeslotenDagen = Array.isArray(extraGeslotenDagen) ? extraGeslotenDagen.filter(dag => {
228
- if (!(dag !== null && dag !== void 0 && dag.einddatum)) return false;
229
- const eindDatum = new Date(dag.einddatum);
230
- eindDatum.setHours(0, 0, 0, 0);
231
- return eindDatum >= today;
232
- }) : [];
233
- const hasLeenauto = leenauto != null;
234
- const hasLeenfiets = leenfiets != null;
235
- const hasHaalEnBreng = haalEnBrengservice != null;
236
- const hasBetaalmethoden = Array.isArray(betaalmethoden) && betaalmethoden.length > 0;
237
- const hasGeslotenDagen = upcomingGeslotenDagen.length > 0;
238
- return /*#__PURE__*/_react.default.createElement("div", {
239
- style: {
240
- marginTop: 10,
241
- paddingTop: 10,
242
- borderTop: '1px solid #e9ecef'
243
- }
244
- }, (hasLeenauto || hasLeenfiets || hasHaalEnBreng) && /*#__PURE__*/_react.default.createElement("div", {
245
- style: {
246
- marginBottom: hasBetaalmethoden || hasGeslotenDagen ? 8 : 0
247
- }
248
- }, hasLeenauto && /*#__PURE__*/_react.default.createElement(ServiceRow, {
249
- icon: "fas fa-car",
250
- label: "Leenauto",
251
- status: leenauto.status,
252
- bedrag: leenauto.bedrag,
253
- voorwaarden: leenauto.voorwaarden
254
- }), hasLeenfiets && /*#__PURE__*/_react.default.createElement(ServiceRow, {
255
- icon: "fas fa-bicycle",
256
- label: "Leenfiets",
257
- status: leenfiets.status,
258
- voorwaarden: leenfiets.voorwaarden
259
- }), hasHaalEnBreng && /*#__PURE__*/_react.default.createElement(ServiceRow, {
260
- icon: "fas fa-truck",
261
- label: "Haal- en brengservice",
262
- status: haalEnBrengservice.status,
263
- voorwaarden: haalEnBrengservice.voorwaarden
264
- })), hasBetaalmethoden && /*#__PURE__*/_react.default.createElement("div", {
265
- style: {
266
- marginBottom: hasGeslotenDagen ? 8 : 0,
267
- paddingTop: hasLeenauto || hasLeenfiets || hasHaalEnBreng ? 8 : 0,
268
- borderTop: hasLeenauto || hasLeenfiets || hasHaalEnBreng ? '1px solid #f1f3f5' : 'none'
269
- }
270
- }, /*#__PURE__*/_react.default.createElement(SectionLabel, {
271
- icon: "fas fa-credit-card",
272
- label: "Betaalmethoden"
273
- }), /*#__PURE__*/_react.default.createElement("div", {
274
- className: (0, _helpers__.withStyle)('d-flex flex-wrap gap-1')
275
- }, betaalmethoden.map((method, i) => /*#__PURE__*/_react.default.createElement("span", {
276
- key: i,
277
- style: {
278
- fontSize: 10,
279
- fontWeight: 600,
280
- padding: '2px 7px',
281
- borderRadius: 4,
282
- border: '1px solid #dee2e6',
283
- color: '#495057',
284
- background: '#f8f9fa'
285
- }
286
- }, method)))), hasGeslotenDagen && /*#__PURE__*/_react.default.createElement("div", {
287
- style: {
288
- paddingTop: hasBetaalmethoden || hasLeenauto || hasLeenfiets || hasHaalEnBreng ? 8 : 0,
289
- borderTop: hasBetaalmethoden || hasLeenauto || hasLeenfiets || hasHaalEnBreng ? '1px solid #f1f3f5' : 'none'
290
- }
291
- }, /*#__PURE__*/_react.default.createElement(SectionLabel, {
292
- icon: "fas fa-calendar-times",
293
- label: "Extra gesloten"
294
- }), /*#__PURE__*/_react.default.createElement("ul", {
295
- className: (0, _helpers__.withStyle)('list-unstyled mb-0')
296
- }, upcomingGeslotenDagen.map((dag, i) => {
297
- const heeftBereik = dag.startdatum && dag.einddatum && dag.startdatum !== dag.einddatum;
298
- const datumLabel = heeftBereik ? "".concat(formatDate(dag.startdatum), " \u2013 ").concat(formatDate(dag.einddatum)) : formatDate(dag.einddatum || dag.startdatum);
299
- return /*#__PURE__*/_react.default.createElement("li", {
300
- key: i,
301
- className: (0, _helpers__.withStyle)('d-flex justify-content-between align-items-baseline'),
302
- style: {
303
- marginBottom: 2
304
- }
305
- }, /*#__PURE__*/_react.default.createElement("span", {
306
- style: {
307
- fontSize: 11,
308
- color: '#495057'
309
- }
310
- }, dag.omschrijving || '—'), /*#__PURE__*/_react.default.createElement("span", {
311
- style: {
312
- fontSize: 10,
313
- color: '#6c757d',
314
- marginLeft: 8,
315
- whiteSpace: 'nowrap'
316
- }
317
- }, datumLabel));
318
- }))));
319
- };
320
- var _default = exports.default = LocationDetails;
@@ -1,140 +0,0 @@
1
- "use strict";
2
-
3
- require("core-js/modules/esnext.iterator.constructor.js");
4
- require("core-js/modules/esnext.iterator.filter.js");
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
- require("core-js/modules/esnext.iterator.constructor.js");
10
- require("core-js/modules/esnext.iterator.filter.js");
11
- var _react = _interopRequireDefault(require("react"));
12
- var _logoThcWhite = _interopRequireDefault(require("../../../../public/assets/images/logo-thc-white.svg"));
13
- var _thLogoBlack = _interopRequireDefault(require("../../../../public/assets/images/th-logo-black.png"));
14
- var _constants__ = require("../../__constants__");
15
- var _helpers__ = require("../../__helpers__");
16
- var _image = require("../../__helpers__/image");
17
- function _interopRequireDefault(e) {
18
- return e && e.__esModule ? e : {
19
- default: e
20
- };
21
- }
22
- const FORMULAS = {
23
- mZHgPhfuStmqHfHqSOhWY: _thLogoBlack.default,
24
- nFbSnWdtLZBmEhhpHFGVO: _logoThcWhite.default
25
- };
26
- const LocationInfo = _ref => {
27
- var _FORMULAS$formula;
28
- let {
29
- street,
30
- houseNumber,
31
- houseNumberExtra,
32
- postCode,
33
- city,
34
- telephoneNumber,
35
- locationImage,
36
- title,
37
- email,
38
- website,
39
- openingHours,
40
- province,
41
- formula
42
- } = _ref;
43
- const fallbackLogo = (0, _constants__.getThemeFormulaForConfiguratorFormula)(formula) === _constants__.CONFIGURATOR_FORMULAS.THC ? _logoThcWhite.default : (_FORMULAS$formula = FORMULAS[formula]) !== null && _FORMULAS$formula !== void 0 ? _FORMULAS$formula : _thLogoBlack.default;
44
-
45
- // Function to format opening hours display text
46
- const formatOpeningHours = dayData => {
47
- if (!dayData) return {
48
- text: 'Onbekend',
49
- isUnknown: true
50
- };
51
- if (!dayData.isOpen) return {
52
- text: 'Gesloten',
53
- isUnknown: false
54
- };
55
- if (dayData.opensAt && dayData.closesAt) {
56
- return {
57
- text: "".concat(dayData.opensAt, " - ").concat(dayData.closesAt),
58
- isUnknown: false
59
- };
60
- } else if (dayData.opensAt) {
61
- return {
62
- text: "".concat(dayData.opensAt),
63
- isUnknown: false
64
- };
65
- } else if (dayData.closesAt) {
66
- return {
67
- text: "".concat(dayData.closesAt),
68
- isUnknown: false
69
- };
70
- }
71
- return {
72
- text: 'Onbekend',
73
- isUnknown: true
74
- };
75
- };
76
- // Order of days to display
77
- const daysOrder = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
78
- return /*#__PURE__*/_react.default.createElement("div", {
79
- className: (0, _helpers__.withStyle)('dealer-map__infowindow p-0 shadow-none')
80
- }, /*#__PURE__*/_react.default.createElement("h4", {
81
- className: (0, _helpers__.withStyle)('text-primary')
82
- }, title), /*#__PURE__*/_react.default.createElement("div", {
83
- className: (0, _helpers__.withStyle)('row row__body no-gutters flex-md-nowrap justify-content-between align-items-start')
84
- }, /*#__PURE__*/_react.default.createElement("div", {
85
- className: (0, _helpers__.withStyle)('col-12 col-md-6 px-0')
86
- }, /*#__PURE__*/_react.default.createElement("ul", {
87
- className: (0, _helpers__.withStyle)('mb-2')
88
- }, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("i", {
89
- className: "fas fa-map-marker-alt ".concat((0, _helpers__.withStyle)('me-1'))
90
- }), ["".concat(street).concat(houseNumber ? " ".concat(houseNumber) : '').concat(houseNumberExtra ? " ".concat(houseNumberExtra) : ''), postCode, city].filter(item => item).join(', ')), telephoneNumber && /*#__PURE__*/_react.default.createElement("li", {
91
- className: (0, _helpers__.withStyle)('mt-1')
92
- }, /*#__PURE__*/_react.default.createElement("i", {
93
- className: "fas fa-phone-alt ".concat((0, _helpers__.withStyle)('mx-1'))
94
- }), /*#__PURE__*/_react.default.createElement("a", {
95
- href: "tel:".concat(telephoneNumber)
96
- }, /*#__PURE__*/_react.default.createElement("u", null, telephoneNumber))), email && /*#__PURE__*/_react.default.createElement("li", {
97
- className: (0, _helpers__.withStyle)('mt-1')
98
- }, /*#__PURE__*/_react.default.createElement("i", {
99
- className: "fas fa-envelope ".concat((0, _helpers__.withStyle)('mx-1'))
100
- }), /*#__PURE__*/_react.default.createElement("a", {
101
- href: "mailto:".concat(email)
102
- }, /*#__PURE__*/_react.default.createElement("u", null, email))), website && /*#__PURE__*/_react.default.createElement("li", {
103
- className: (0, _helpers__.withStyle)('mt-1')
104
- }, /*#__PURE__*/_react.default.createElement("i", {
105
- className: "fas fa-globe ".concat((0, _helpers__.withStyle)('mx-1'))
106
- }), /*#__PURE__*/_react.default.createElement("a", {
107
- href: website
108
- }, /*#__PURE__*/_react.default.createElement("u", null, website)))), /*#__PURE__*/_react.default.createElement("p", {
109
- className: (0, _helpers__.withStyle)('font-weight-bold mb-1 d-none d-md-block')
110
- }, /*#__PURE__*/_react.default.createElement("i", {
111
- className: "fas fa-clock ".concat((0, _helpers__.withStyle)('mx-1'))
112
- }), "Openingstijden"), /*#__PURE__*/_react.default.createElement("ul", {
113
- className: (0, _helpers__.withStyle)('ml-3 p-0 d-none d-md-block'),
114
- style: {
115
- lineHeight: '1.2'
116
- }
117
- }, daysOrder.map(day => {
118
- const hoursInfo = openingHours && formatOpeningHours(openingHours[day]);
119
- return /*#__PURE__*/_react.default.createElement("li", {
120
- key: day,
121
- className: (0, _helpers__.withStyle)('d-flex align-content-center justify-content-between mb-0'),
122
- style: {
123
- marginBottom: '2px'
124
- }
125
- }, /*#__PURE__*/_react.default.createElement("p", {
126
- className: (0, _helpers__.withStyle)('mb-0')
127
- }, _constants__.DAY_NAMES[day]), /*#__PURE__*/_react.default.createElement("p", {
128
- className: "".concat(hoursInfo !== null && hoursInfo !== void 0 && hoursInfo.isUnknown ? (0, _helpers__.withStyle)('text-muted fst-italic') : '', " ").concat((0, _helpers__.withStyle)('mb-0'))
129
- }, (hoursInfo === null || hoursInfo === void 0 ? void 0 : hoursInfo.text) || 'Onbekend'));
130
- }))), /*#__PURE__*/_react.default.createElement("div", {
131
- className: (0, _helpers__.withStyle)('col-12 col-md-6 d-flex flex-column justify-content-evenly align-items-center')
132
- }, /*#__PURE__*/_react.default.createElement("img", {
133
- className: (0, _helpers__.withStyle)('mb-1'),
134
- src: locationImage !== null && locationImage !== void 0 && locationImage.length ? (0, _image.getImageFromHyper)({
135
- imageId: locationImage
136
- }) : fallbackLogo,
137
- alt: title
138
- }))));
139
- };
140
- var _default = exports.default = LocationInfo;